VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 网站开发 > JavaScript教程 >
  • 136. 只出现一次的数字 循环利用indexOf求解

136. 只出现一次的数字 循环利用indexOf求解

查看原题  https://leetcode-cn.com/problems/single-number/

解题思路

这种方法时间复杂度较高
利用indexOf方法判断数组当前项在前后是否还能找到与他一样的数,如果不能找到,这个数即为所求。

代码


	
 
/**
 
* @param {number[]} nums
 
* @return {number}
 
*/
 
var singleNumber = function(nums) {
 
const length = nums.length;
 
for (let i = 0; i < length; i++) {
 
if (nums.indexOf(nums[i], i + 1) === -1 && nums.indexOf(nums[i]) === i) {
 
return nums[i]
 
}
 
}
 
};

解题思路

  1. 将数组转为set集合,set集合没有重复项
  2. 对set集合每一项求和 sum1
  3. 对数组求和 sum2
  4. set集合的和sum1表示数组不重复项的和,乘以2再减去sum2即为那个只出现一次的数

代码


	
 
/**
 
* @param {number[]} nums
 
* @return {number}
 
*/
 
var singleNumber = function(nums) {
 
const set = new Set(nums); //将nums转为集合
 
let sum1 = 0; //求set集合各项的和
 
let sum2 = 0; //求数组的各项和
 
for (const item of set) {
 
sum1 += item;
 
}
 
nums.forEach(vaule => {
 
sum2 += vaule;
 
})
 
return (2 * sum1) - sum2;
 
};
 
出处:https://www.cnblogs.com/xyq135/p/15724193.html


相关教程