zoukankan      html  css  js  c++  java
  • leetcode 只出现一次的数字

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

    示例 1:

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

    /**
     * @param {number[]} nums
     * @return {number}
     */
    var singleNumber = function (nums) {
        for (let i = 0; i !== nums.length; i++) {
            let isExist = false;
            for (let j = i + 1; j !== nums.length; j++) {
                if (nums[j] === nums[i]) {
                    isExist = true;
                    break;
                }
            }
            for (let j = i - 1; j >= 0; j--) {
                if (nums[j] === nums[i]) {
                    isExist = true;
                    break;
                }
            }
            if (!isExist) {
                return nums[i];
            }
        }
    };
    

    说实话,一手强烈的自我怀疑…
    我自己都不知道到底对不对,丢进去他说我对就对了吗?很迷
    睡觉了,终于熬到周五…

    上面这个方法也太傻了,蠢到不行

    /**
     * @param {number[]} nums
     * @return {number}
     */
    var singleNumber = function (nums) {
        let obj = {};
        for (let i = 0; i !== nums.length; i++) {
            if (obj[nums[i]] === undefined) {
                obj[nums[i]] = NaN;
            } else {
                delete obj[nums[i]];
            }
        }
        return +Object.keys(obj)[0];
    };
    

    这是一个比较好理解的方法,看了以后就学会了

    /**
     * @param {number[]} nums
     * @return {number}
     */
    var singleNumber = function(nums) {
      let result = 0;
      nums.forEach(el => (result ^= el));
      return result;
    };
    

    这个是根本看不懂的方法,就算我百度了按位异或,我还是看不懂

  • 相关阅读:
    2012的目标
    让顺丰快递给折腾了,昨晚发的快递,现在还没挪地方
    做的FM收音机终于交工,老婆验收完毕
    C语言宏定义使用技巧
    20棵树植树问题
    C简单实现动态2维数组
    运动量测试
    #pragma pack(n)的含义及其用法
    回调函数
    ubuntu 全局配置文件
  • 原文地址:https://www.cnblogs.com/sbzy/p/9375218.html
Copyright © 2011-2022 走看看