217. Contains Duplicate
這是leetCode第217題
題目
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.
意思是說(shuō):
給出一個(gè)整數(shù)數(shù)組,找出數(shù)組是否包含重復(fù)項(xiàng)。只要數(shù)組中任意一個(gè)值出現(xiàn)至少兩次,就返回true。如果數(shù)組中每個(gè)元素都是不同的,那就返回false。
思路:
數(shù)組(或?qū)ο螅┑膶傩允遣粫?huì)重復(fù)的。因此我們可以將數(shù)組中的每個(gè)整數(shù)作為新數(shù)組的索引,每個(gè)整數(shù)對(duì)應(yīng)的索引作為新數(shù)組的值。每次進(jìn)行賦值操作前,都判斷要新數(shù)組上當(dāng)前整數(shù)的代表的索引位置,是否已經(jīng)有值了。如果存在值了,說(shuō)明整數(shù)重復(fù)了,返回true。否則就給新數(shù)組賦值。如此反復(fù),直到循環(huán)結(jié)束。如果沒(méi)有重復(fù)的,就返回false。
代碼如下:
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
var obj = [];
var l = nums.length;
for (var i = 0; i < l; i++) {
if (obj[nums[i]] !== undefined) {
return true;
}
obj[nums[i]] = i;
}
return false;
};