217. Contains Duplicate

判斷一個數組中是否存在相同元素的題目。
描述:
Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.
意爲:給出一個int型數組,找出是否有重複的元素,有的話返回true,沒重複元素返回false。

給出的Tags是array和hash table,所以考慮用這兩種方法來做:

先排序後比較前後元素是否相等

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        for(int i = 1;i < nums.size();i++){
            if(nums[i-1] == nums[i]){
                return true;
            }
        } 
        return false;
    }
};

python:

class Solution(object):
    def containsDuplicate(self, nums):
        nums.sort()
        i = 1
        while i < len(nums):
            if nums[i-1] == nums[i]:
                return True
            i+=1
        return False

hash_map

第二種就是使用hash表了,我們知道hash通常也都是用來判重去重的,因爲它的key是唯一的,我們可以用key的有無來判斷某個元素的存在。

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
    //這個unordered_map是hash_map的升級版,在c++11中提出的
        unordered_map<int,bool> hash;
        for(int i = 0;i < nums.size();i++){
            if(hash.count(nums[i])){return true;}
            hash[nums[i]] = true;
        }
        return false;
    }
};

python中也有相似的結構dict字典,支持鍵值對存儲:

class Solution(object):
    def containsDuplicate(self, nums):
        res = {}
        nums.sort()
        for i in nums:
            if i in res:
                return True
            else:
                res[i] = 0
        return False
發佈了67 篇原創文章 · 獲贊 99 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章