程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> leetcode筆記:Contains Duplicate

leetcode筆記:Contains Duplicate

編輯:C++入門知識

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

這裡提供兩個方法:

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

三. 示例代碼

// 方法一
class Solution {
public:
    bool containsDuplicate(vector& 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& nums) {
        unordered_map numsMap;
        for (int i = 0; i < nums.size(); ++i) {
            if(numsMap.count(nums[i])){
                return true;
            }
            numsMap.insert(pair(nums[i], i));
        }
        return false;
    }
};

四. 小結

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved