当前位置 : 主页 > 编程语言 > 其它开发 >

力扣算法JS LC [349. 两个数组的交集] LC [202. 快乐数]

来源:互联网 收集:自由互联 发布时间:2022-05-30
菜鸡刷算法的一天,每天分享两题算法,大家有这个想法的,可以给我个关注,然后一起坚持每天的算法之旅。希望我们共同进步,一起加油。 LC 349. 两个数组的交集 给定两个数组 n
菜鸡刷算法的一天,每天分享两题算法,大家有这个想法的,可以给我个关注,然后一起坚持每天的算法之旅。希望我们共同进步,一起加油。 LC 349. 两个数组的交集

给定两个数组 nums1nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序

 

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]

示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的

 

解题思路:将一个数组放进 set 集合中,然后拿另外一个数组来进行比对,看是否有一样的,有就放进输出结果的集合中

代码:

var intersection = function(nums1, nums2) {
   // 判断nums1长度与nums2长度 保证 前者长度要大于后者
   if(nums1.length < nums2.length) {
       const arr = nums1;
       nums1 = nums2;
       nums2 = arr;
  }
   const setNums1 = new Set(nums1); //将nums1的值放进set集合中
   const result = new Set();
   for(let i = 0; i < nums2.length; i++) { //遍历nums2 ,查看是否在这个集合里面,有就放进输出结果的集合中。
       if(setNums1.has(nums2[i])) {
           result.add(nums2[i])
      }
  }
   return Array.from(result)
};

 

LC 202. 快乐数

编写一个算法来判断一个数 n 是不是快乐数。

「快乐数」 定义为:

对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1,那么这个数就是快乐数。 如果 n 是 快乐数 就返回 true ;不是,则返回 false 。

 

示例 1:

输入:n = 19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

 

示例 2:

输入:n = 2
输出:false

解题思路:创建一个 set 集合,然后利用reduce 进行求值 放进 set 中进行判断

代码:

var isHappy = function (n) {
 const set = new Set();
 while (n !== 1) {
   if (set.has(n)) return false  //有出现重复的 就直接return false
   set.add(n)
   n = (n + '').split('').reduce((l, i) => l + i * i, 0) //将 n 分解出来,然后利用reduce进行求和
}
 return true
};
 
上一篇:二叉树搜索性能比较
下一篇:没有了
网友评论