一次就够:只出现一次的数字| 刷题打卡

212 阅读2分钟

没想到周末反而更加松懈了,睡到下午才起来,然后看狼叔主持的 Node 地下铁第十期;没想到时间过得很快,一下就到七点了。想想今天学到了什么?好像又记住了一些概念,感觉每位讲师都很厉害,如果他们收徒,我恨不得立马拜入门下。印象最深刻的两个点:97年的张宇昂凭一己之力开源了全宇宙最强的 SSR 框架;还有杭州买房房价翻倍是不是意味着几百万就砸脑袋上了?而我,想想下个月可能就断供了……唉,继续今天的题!

题目描述

分类困难度👍👎
算法简单 (70.95%)1728-
标签 哈希表 位运算
公司 airbnb | palantir

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

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

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

示例 2:

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

思路分析

第一眼看到这个题时,似曾相识,和昨天的“存在重复元素”的暴力解法类似,先排序然后依次比较,如果前面一个和后面一个元素不相等就返回这个元素。

AC 代码

暴力解法

/*
 * @lc app=leetcode.cn id=136 lang=javascript
 *
 * [136] 只出现一次的数字
 */

// @lc code=start
/**
 * @param {number[]} nums
 * @return {number}
 */
var singleNumber = function (nums) {
  let arr = nums.sort();
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] != arr[i + 1]) {
      return arr[i];
    }
  }
};
// @lc code=end

待补充

总结

做了六道题依旧感觉很迷茫,找不到方法,如何才能摆脱 Copy攻城狮 ,一直是我心中无解的问题。

本文正在参与「掘金 2021 春招闯关活动」, 点击查看活动详情