题目
给你一个整数数组
nums
。如果这个数组中的某一个值在数组中出现至少两次,返回true
;如果数组中每个元素互不相同,返回false
。
输入: nums = [1,2,3,1] 输出: true 输入: nums = [1,2,3,4] 输出: false
题解
这道题其实就是一个判断数组中是否有重复值的操作,有重复值返回
true
,没有重复值返回false
。我们在函数中先判断一下当前传入值是否为一个数组或当前入参中的长度必须大于0,如果其中一项不是则返回当前的出参nums
,符合则继续往下执行,我们先声明一个arr
变量,它的值是一个空数组,它的作用类似于仓库,在声明一个flag
变量用于存放最终是否检测出重复值的结果,默认值是false
,然后我们对出参nums
数组进行循环,在循环中我们进行使用数组中的indexOf
方法进行判断当前arr
数组中是否有当前循环下nums
数组的值,indexOf
方法如果没有找到符合的值就会返回-1
找到就会返回符合值的下标,我们以此作为判断条件,如果该方法返回的值不等于-1
则说明找到了重复的值,这个时候我们将flag
变量赋值为true
,直接返回出去,如果返回值是-1
,我们将当前循环下nums
数组中的值通过push
方法添加到arr
数组中,如果循环完成后还没有发现重复的值,我们就将flag
变量的值直接返回出去即可
/** * @param {number[]} nums * @return {boolean} */ var containsDuplicate = function (nums) { if (!Array.isArray(nums) || nums.length < 0) { return nums; } let arr = []; let flag = false; for (let i = 0; i < nums.length; i++) { if (arr.indexOf(nums[i]) != -1) { flag = true; return flag; } else { arr.push(nums[i]) } } return flag; };
坚持努力,无惧未来!