前端算法-存在重复元素

85 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情

题目

给你一个整数数组 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;
        };

坚持努力,无惧未来!