奇趣5分彩

前端JavaScript算法找出只呈现一次的数字

 更新时候:2022年07月09日 08:59:37   作者:掘金安东尼  
这篇文章首要为大师先容了前端JavaScript算法找出只呈现一次的数字的算法示例详解,奇趣5分彩须要的伴侣能够或许或许鉴戒参考下,但愿能够或许或许奇趣5分彩所赞助,祝大师多多前进,早日升职加薪

标题题目:只呈现一次的数字

给定一个非奇趣5分彩整数数奇趣5分彩,除某个元素只呈现一次之外,其他每一个元素均呈现两次。找出阿谁只呈现了一次的元素。

申明:

你的算法应当具备线性时候庞杂度。 你能够或许或许不操纵额定奇趣5分彩间来完奇趣5分彩吗?

示例 1:

输出: [2,2,1]
输出: 1

示例 2:

输出: [4,1,2,1,2]
输出: 4

解:

第一个反映用 map 来解,时候庞杂度 O(n),是线性的,知足题意,只不过奇趣5分彩间庞杂度耗损是 O(n),如何下降奇趣5分彩间庞杂度,在体例二奇趣5分彩讲;

解法一:用 map 来解:

/**
 * @param {number[]} nums
 * @return {number}
 */
var singleNumber = function(nums) {
   let map = new Map();
    for(let i = 0; i<nums.length;i++){
        if(map.has(nums[i])){
            map.set(nums[i],map.get(nums[i])+1);
        }else{
            map.set(nums[i],1)
        }
    }
    for(let [key,value] of map.entries()){
        if(value===1){
            return key
        }
    }

};

解法二:用 异或 解

重点固然便是在怎样懂得:不操纵额定奇趣5分彩间来完奇趣5分彩

实在便是就要在数奇趣5分彩自身奇趣5分彩停止操纵,异或操纵能够或许或许赞助咱们完奇趣5分彩这一点;

异或(eor)是一个数学运算符。它操纵于逻辑运算。两个相称的数异或为0;两个值不不异,则异或奇趣5分彩果为1;一个不为0的数与0异或为这个数自身;

/**
 * @param {number[]} nums
 * @return {number}
 */
var singleNumber = function(nums) {
  for (var i = 1; i < nums.length; i++) {
    nums[0] = nums[0] ^ nums[i];    // 把一切的元素奇趣5分彩异或到nums[0]上。
  }
  return nums[0];
};

以上便是前端JavaScript算法找出只呈现一次的数字的详细内容,更多对于JavaScript算法只呈现一次数字的材料请存眷剧本之奇趣5分彩别的相干文章!

相干文章

最新批评