leetcode筆記: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.

二. 題目分析

題目的大意是,給定一個整數數組,判斷數組中是否包含重複的元素。若數組中任意一個數字出現了至少兩次,函數返回true;否則,返回false

這裏提供兩個方法:

  1. 先對數組進行排序,然後遍歷數組,若出現兩個相鄰元素的值相同時,表明有重複元素,返回true;反之返回false。
  2. 使用map來實現。遍歷數組,每訪問一個元素,看其是否在map中出現,如已出現過,則存在重複元素,返回true;如沒有,則將元素加入到map中。

三. 示例代碼

// 方法一
class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        int n = nums.size();
        if (n < 2) return false;
        sort(nums.begin(), nums.end());
        for (int i = 1; i < n; ++i)
            if (nums[i] == nums[i - 1]) return true;
        return false;
    }
};
// 方法二
class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        unordered_map<int, int> numsMap;
        for (int i = 0; i < nums.size(); ++i) {
            if(numsMap.count(nums[i])){
                return true;
            }
            numsMap.insert(pair<int, int>(nums[i], i));
        }
        return false;
    }
};

四. 小結

相關的題目有:Contains Duplicate II 和 Contains Duplicate III。

發佈了249 篇原創文章 · 獲贊 99 · 訪問量 115萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章