LeetCode / 2 min read

LeetCode - 217. Contains Duplicate

LeetCode217

On this page

題目: 217. Contains Duplicate

給一數字陣列,找出裡面是否有重複的數字。

解題思路

思路一: iterate陣列nums,並把看過的num存在set中;如果num已經在set中,則返回True; 否則iterate結束(代表沒有找到有重複的num)則返回False。

思路二: 排序陣列nums後,從第二個(index = 1)開始iterate整個陣列,並檢查前一個num與當前num是否相同,相同則重複; 否則iterate結束(代表沒有找到有重複的num)則返回False。

Code

Java:

Runtime 5 ms(96.38%), Memory 50.6 MB(96.43%)

Code
class Solution {    public boolean containsDuplicate(int[] nums) {        HashSet<Integer> viewed = new HashSet<Integer>();        for(int i=0; i<nums.length; i++){            if(!viewed.add(nums[i])){                return true;            }        }        return false;    }}

Python3:

Runtime 464 ms(85.88%), Memory 25.9 MB(91.76%)

Code
class Solution:    def containsDuplicate(self, nums: List[int]) -> bool:        viewed = set()        for i in range(len(nums)):            if nums[i] in viewed:                return True            else:                viewed.add(nums[i])        return False

C#:

Runtime 199 ms(66.51%), Memory 52.2 MB(36.17%)

Code
public class Solution {    public bool ContainsDuplicate(int[] nums) {        HashSet<int> viewed = new HashSet<int>();        for(int i=0; i<nums.Length; i++){            if(!viewed.Add(nums[i])){                return true;            }        }        return false;    }}

Golang:

Runtime 65 ms(97.15%), Memory 8.9 MB(55.31%)

Code
type void struct{}var empty voidfunc containsDuplicate(nums []int) bool {    viewed := make(map[int]void);    for _, num := range nums {        if _, ok := viewed[num]; ok {            return true;        }else{            viewed[num] = empty;        }    }    return false;}

C++:

Runtime 112 ms(68.51%), Memory 51.5 MB(52.15%)

Code
class Solution {public:    bool containsDuplicate(vector<int>& nums) {        unordered_set<int> viewed;        for(int i=0; i<nums.size(); i++){            if (viewed.count(nums[i])){                return true;            }else{                viewed.insert(nums[i]);            }        }        return false;    }};

C:

Runtime 125 ms(73.38%), Memory 12.6 MB(90.14%)

Code
int compare(const int *a, const int *b){    return *a - *b;}bool containsDuplicate(int* nums, int numsSize){    qsort(nums, numsSize, sizeof(int), compare);    for(int i=1; i<numsSize; i++){        if (nums[i - 1] == nums[i]){            return true;        }    }    return false;}

Discussion

留言會在接近此區域時載入。