-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcontains-duplicate.js
76 lines (69 loc) · 1.84 KB
/
contains-duplicate.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/**
* Source: https://leetcode.com/problems/contains-duplicate/
* Tags: [Array,Hash Table]
* Level: Easy
* Title: Contains Duplicate
* Auther: @imcoddy
* Content: 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.
*/
/**
* @param {number[]} nums
* @return {boolean}
*/
/**
* Memo: use a map to check if the element exists or not
* Complex: O(n)
* Runtime: 132ms
* Tests: 16 test cases passed
* Rank: A
*/
var containsDuplicate = function(nums) {
var map = Object.create(null);
for (var i = 0; i < nums.length; i++) {
if (map[nums[i]]) return true;
map[nums[i]] = true;
}
return false;
};
/**
* Memo: easiest but worst solution probably.
* Complex: O(n^2)
* Runtime: 1384ms
* Tests: 16 test cases passed
* Rank: D
*/
var containsDuplicate = function(nums) {
for (var i = 0; i < nums.length - 1; i++) {
for (var j = i + 1; j < nums.length; j++) {
if (nums[i] === nums[j]) {
return true;
}
}
}
return false;
};
/**
* Memo: Sort array first and find element which is duplicate to its next.
* Complex: O(nlgn)
* Runtime: 160ms
* Tests: 16 test cases passed
* Rank: NA
*/
var containsDuplicate = function(nums) {
if (nums.length <= 1) {
return false;
}
var a = nums.sort();
for (var i = 0; i < a.length - 1; i++) {
if (a[i] === a[i + 1]) {
return true;
}
}
return false;
};
var should = require('should');
console.time('Runtime');
containsDuplicate([3, 5, 1, 9, 7]).should.equal(false);
containsDuplicate([1, 3, 5, 7, 9]).should.equal(false);
containsDuplicate([1, 3, 5, 7, 1]).should.equal(true);
console.timeEnd('Runtime');