LeetCode-只出现一次的数字-哈希表-异或-py

  • 题目回顾
  • 题解
  • python 哈希表实现
  • python 异或实现

题目回顾

传送门

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

说明:

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

示例 1:

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

示例 2:

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

题解

方法二 参考题解1和题解2,异或
时间复杂度是 O(n)O(n)O(n),
空间复杂度O(n)−>O(1)O(n)->O(1)O(n)−>O(1),
执行用时:56ms56 ms56ms

题意说明只有1个是单数。

  1. 方法一

    建立哈希表,空间复杂度为O(n),一次循环用字典存储所有的数的个数,第二个遍历查找为个数为1的,返回该值.

  2. 方法二

    异或运算快速找只出现一次的数字。 两个相同的数字做异或运算结果为0;0与非0数字做异或运算结果为非零运算。

python 哈希表实现

class Solution:def singleNumber(self, nums):if not nums:return Nonedic={}for i in range(len(nums)):dic[nums[i]]=dic.get(nums[i],0)+1for i in range(len(nums)):if dic.get(nums[i],0)==1:return nums[i]

python 异或实现

class Solution:def singleNumber(self, nums):singel_num = 0for num in nums:singel_num ^= numreturn singel_num

LeetCode-只出现一次的数字-哈希表-异或-py相关推荐

  1. [剑指offer]面试题第[50]题[JAVA][第一个只出现一次的字符][哈希表][HashMap]

    [问题描述][简单] 在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. s 只包含小写字母.示例:s = "abaccdeff" 返回 "b&quo ...

  2. LeetCode 890. 查找和替换模式(哈希表)

    1. 题目 你有一个单词列表 words 和一个模式 pattern,你想知道 words 中的哪些单词与模式匹配. 如果存在字母的排列 p ,使得将模式中的每个字母 x 替换为 p(x) 之后,我们 ...

  3. leetcode 只出现一次的数字

    16 / 16 个通过测试用例 状态:通过 执行用时:12 ms 内存消耗:40.8 MB 提交时间:6 月,3 周之前 class Solution {public int singleNumber ...

  4. leetcode 454. 四数相加 II(哈希表)

    给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0. 为了使问题简单化,所有的 A ...

  5. 剑指offer面试题50. 第一个只出现一次的字符(哈希表)

    题目描述 在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. s 只包含小写字母. 思路 详见链接 代码 class Solution:def firstUniqueChar(se ...

  6. LeetCode 2353. 设计食物评分系统 维护哈希表+set

    设计一个支持下述操作的食物评分系统: 修改 系统中列出的某种食物的评分. 返回系统中某一类烹饪方式下评分最高的食物. 实现 FoodRatings 类: FoodRatings(String[] fo ...

  7. 127. Leetcode 242. 有效的字母异位词 (哈希表)

    class Solution:def isAnagram(self, s: str, t: str) -> bool:record = [0] * 26for i in range(len(s) ...

  8. LeetCode 567. 字符串的排列 (滑动窗口哈希表)

    567. 字符串的排列 题意: 第一个字符串的排列之一是第二个字符串的子串 即判断第二个字符串是否包含某个子串,这个子串的字符以及字符数量要求与第一个字符串相同 解法1 (暴力法) 按照第一个字符串的 ...

  9. LeetCode 454. 四数相加 II【哈希表】

    454. 四数相加 II 给你四个整数数组 nums1.nums2.nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 <= i, j ...

最新文章

  1. bootstrap4 调整元素之间距离
  2. linux 下ssh端口反弹,利用ssh隧道反弹shell
  3. 2016蓝桥杯省赛---java---B---1(有奖猜谜)
  4. HDFS--分布式文件系统
  5. IEnumerable
  6. 电子之嵌入式主流芯片浏览
  7. 如何用 GitHub Actions 写出高质量的 Python代码?
  8. 匿名页反向映射得建立
  9. 动态内存分配(c++)
  10. l3asnumanode 设置_numa设置与mysql
  11. 2014最好的IT简历提示
  12. revit2016对应lumion版本_revit如何导入lumion?revit文件转化成lumion文件有诀窍!
  13. python:求list的中位数
  14. 【Spark】PM数据清洗(一)
  15. Milet谷仓:区块链电商先行者
  16. 微软校园招聘面试经历
  17. 使用token验证登录信息,把token存到数据库中
  18. 阿里云OSS服务器上传图片并获取路径(SpringBoot)(☆)
  19. 亚马逊测评自养号,小白应该如何开始?
  20. mysql 查询数据库ip_如何查看连接MYSQL数据库的IP信息

热门文章

  1. JAVA多线程设计模式篇 1、什么是多线程设计模式
  2. form表单如何不直接提交?
  3. Drools简单入门
  4. Expected binary or unicode string, got 3
  5. 地理坐标系,投影坐标系区别
  6. 企业微信聊天工具栏怎么开启?如何调整位置?
  7. VSCode搭建 c 环境教程
  8. web 服务端与客户端交互
  9. duet设置_Duet Display使用感受
  10. 上班第一天的报错(AWVS卸载不彻底)