逻辑鬼才前端大厂面试题巧解-力扣(349)两个数组交集

题目:给定两个数组,编写一个函数来计算它们的交集。

解题思路

第一步:求出两个数组的均有的元素

  1. 定义一个新数组newArr,用于存储两个数组的交集。

  2. 遍历nums1数组

  3. 遍历nums2数组

  4. 将nums1遍历的结果与nums2遍历的结果进行对比

  5. 若nums1中的某个元素的与nums2中的元素相同,则利用push方法将该元素存入数组newArr中

第二步:检查存储交集元素的数组是否存在重复元素,有的话需要去重,没有的话则直接输出newArr

  1. 遍历newArr数组

  2. 依次判断数组中元素第一次出现的位置和最后一次出现的位置是否一致

  3. 若一致,则该元素没有重复

  4. 若不一致,则说明有重复元素,利用数组splice方法删除重复元素,一致为止

注意:数组去重时候,可以删除前面的元素,也可以删除后面的元素,如删除前面的元素,则需要循环考虑数组删除元素导致数组长度变短带来的影响,否则则不需要考虑

代码如下


    function repeat(nums1, nums2) {

            var newArr = []

            for(var i = 0 ; i < nums1.length; i ++){

                for(var j = 0 ; j < nums2.length; j ++){

                    if(nums1[i] === nums2[j]){

                        newArr.push(nums1[i]);
                    }
                }
            }

            for(var k = 0; k < newArr.length; k ++){

                for(;k !== newArr.lastIndexOf(newArr[k]);){

                    newArr.splice(k,1)

                    k --;//消除数组长度变短带来的影响
                }
            }
            return newArr;
        };

欢迎各位提出不同思路一起研究探讨
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。