问题描述

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

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

示例 2:

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

解题思路

本题需要使用到异或运算符,异或运算符是比较两个数的二进制位,相同为0,不同为1,因此异或运算符具有以下性质
1.交换律:a ^ b ^ c <=> a ^ c ^ b
2.任何数于0异或为任何数 0 ^ n => n
3.相同的数异或为0: n ^ n => 0

本题中除了某一个元素以外,其他元素都是成对出现的,由性质1,异或运算符可以交换,因此,相同的元素可以看成是相邻的,由性质3,相同的树异或为0,所以除了单独出现的元素外,其他所有元素的异或结果为0,由性质2,把所有元素互相异或,得到结果即为单独出现的那个元素的值

代码实现

class Solution {public int singleNumber(int[] nums) {int result=nums[0];//将数组中所有元素进行异或,得到的结果即为单独出现的元素值for(int i=1;i<nums.length;i++){result=result^nums[i];}return result;}
}

leetcode题解136-只出现一次的数字相关推荐

  1. Leetcode:NO.136 只出现一次的数字

    题目 链接:https://leetcode-cn.com/problems/single-number 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次 ...

  2. leetcode系列-136.只出现一次的数字

    题目描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素.示例: 示例 1: 输入: [2,2,1] 输出: 1示例 2: 输入: [4,1,2 ...

  3. LeetCode:136. 只出现一次的数字

    136. 只出现一次的数字 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 1.法一: 遍历 nums\text{nums}nums 中的每一个元素 如果某个 nums\text{nums} ...

  4. Java实现 LeetCode 136 只出现一次的数字

    136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现 ...

  5. 136. 只出现一次的数字(关于异或的使用)

    136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现 ...

  6. 136. 只出现一次的数字【我亦无他唯手熟尔】

    136. 只出现一次的数字 136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素.说明:你的算法应该具有线性时间复杂度. 你 ...

  7. 136. 只出现一次的数字

    136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现 ...

  8. Leetcode题库 136.只出现一次的数字(异或 C实现)

    文章目录 思路 代码 思路 两相同数字异或时为0, 将数组中数字挨个儿异或, 最后仅会剩下那个只出现一次的数字 代码 int singleNumber(int* nums, int numsSize) ...

  9. LeetCode 136. 只出现一次的数字(异或^)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明:你的算法应该具有线性时间复杂度. 你 ...

  10. LeetCode[136.只出现一次的数字](简单) -- java

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明:你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: 输入: [2 ...

最新文章

  1. 分布式缓存系统 Memcached CAS协议
  2. 如何用MediaCapture解决二维码扫描问题
  3. 又一次回到追寻梦想的地方
  4. SQLServer安装挂起解决方法
  5. 前端-requests-flask对应关系 restful
  6. django写一个简单的登陆注册
  7. 公里与英里的换算c语言函数_这些天然气单位换算你知道吗?
  8. 豆瓣评论【数据集分享】
  9. 穿越计算机的迷雾--读书笔记四
  10. SpringBoot整合腾讯云COS
  11. 一键识别图片中的表格数据,并转为Excel
  12. 头条小程序可以使用uniapp的地图选择(uni.chooseLocation)
  13. 热风销售不合格凉鞋、外套遭处罚,服装商家经营需诚信
  14. 思科路由器命令大全(一)
  15. 基于ANSYS WORKBENCH的装配体分析
  16. 2018-2019ICPC焦作C题Supreme Command kd-tree
  17. 微信小程序使用三元运算符
  18. 如何防止亚马逊账号被关联?
  19. Java 微服务实践
  20. 计算机平均数据传输速率怎么算,如何计算总线数据传输速率

热门文章

  1. 程序员遇到bug时常见的30种反应
  2. Linux操作系统下的多线程编程详细解析----条件变量pthread_cond_t那些事儿
  3. java 接口 设计模式吗_JAVA接口设计模式-工厂模式
  4. vs使用未初始化的内存怎么解决_C语言内存操作陷阱总结
  5. 记一次设备网络问题的排查
  6. oracle:时间数据的处理
  7. 【clickhouse】ClickHouse之DBA运维宝典
  8. 【Elasticsearch】在Elasticsearch中支持纳秒时间戳
  9. 【kafka】 Error when handling request Name: FetchRequest cannot compare its segment info since it only
  10. 【Spark】Spark 报错 error writing stream metadata exitcode=1073741515