leetcode 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


思路1
使用set記錄元素,因爲set的特性–不記錄重複元素,故可以根據記錄後set.size()是否增長來判斷是否有重複元素出現。
代碼1

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        set<int> unionnums;
        int i, n = nums.size(), size;
        for(i = 0; i < n; i++) {
            unionnums.insert(nums[i]);
            if(unionnums.size() != i+1) {
                return true;
            }
        }
        return false;
    }
};

輸出發現
耗時
在這裏插入圖片描述


改進思路2
先排序,然後判斷排序後相鄰元素是否有重複。

代碼2

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

在這裏插入圖片描述



補充:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章