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é)束塔逃。如果沒有重復(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;
};