贺胖娇的编程之旅......

217.存在重复元素

2020.08.31

题目链接:217.存在重复元素

题目描述

难度 简单 描述 给定一个整数数组,判断是否存在重复元素。

如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。

示例 1: 输入: [1,2,3,1] 输出: true

示例 2: 输入: [1,2,3,4] 输出: false

示例3: 输入: [1,1,1,3,3,4,3,2,4,2] 输出: true

自行解法

直接循环,判断每个元素和剩余的其他元素是否重复,不重复则去除这个元素,继续比较

class Solution {

    /**
     * @param Integer[] $nums
     * @return Boolean
     */
    function containsDuplicate($nums) {
        $dataCheck = $nums;
        for ($i = 0; $i < count($nums); $i++) {
            $check = $nums[$i];
            unset($dataCheck[$i]);
            if (in_array($check, $dataCheck)) {
                return true;
            }
        }
        return false;
    }
}

其他优质解法

先去重,判断去重后的长度是否比之前的长度短,是则说明有重复

class Solution {

    /**
     * @param Integer[] $nums
     * @return Boolean
     */
    function containsDuplicate($nums) {
        $unique = array_unique($nums);
        if (count($nums) > count($unique)) {
            return true;
        }
        return false;
    }
}

这个解法还可以精简为一行代码:

class Solution {
    /**
     * @param Integer[] $nums
     * @return Boolean
     */
    function containsDuplicate($nums) {
        return count($nums) != count(array_unique($nums));
    }
}
发表评论