Skip to content
本页目录

0217-存在重复元素

https://leetcode.cn/problems/contains-duplicate

给定一个整数数组,判断是否存在重复元素。 如果存在一值在数组中出现至少两次,函数返回 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

思路1:暴力法

暴力法循环两次数组,发现相同的数字则返回 true, 循环结束则返回 false, 时间复杂度 O(n^2)

参考代码

csharp
public class Solution {
    public bool ContainsDuplicate(int[] nums) {
        //暴力法循环两次
        for(int i=0; i<nums.Length-1; i++){
            for(int j=i+1;j<nums.Length; j++){
                if(nums[i] == nums[j]){
                    return true;
                }
            }
        }
        return false;
    }
}

思路2:字典缓存

优化解法:使用字典缓存数子,每次循环检测字典中是否存在相同数字,是返回 true, 循环结束则 false

参考代码

csharp
public class Solution {
    public bool ContainsDuplicate(int[] nums) {
        Dictionary<int,int> dict = new Dictionary<int,int>();
        for(int i=0; i<nums.Length; i++){
            if(dict.ContainsKey(nums[i])){
                return true;
            }
            else{
                dict.Add(nums[i],nums[i]);
            }
        }
        return false;
    }
}

Released under the MIT License.