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

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
};
 
posted @   小宝想学好前端  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示