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

对于这样一个问题,我们可以使用一种小技巧,既用异或来解题。
首先我们要了解异或的几个性质
1.两个数异或是,二进制位相同取0.不相同取1。
例如:5 和9
5:0101
9:1001
5^9:1100
2.0异或任何数得到的都是那个数
3.任何数异或自己得到的都是0

例如上面的示例,我们可以让所有数据互相异或,因为除了某个元素外其余均出现两次,而相同的数字异或得到的为0,0再异或那个只出现一次的数既得到它本身。
如对于示例2
4 ^ 1 ^ 2 ^ 1 ^ 2 = 4 ^ 0 ^ 0 = 4
所以解法如下:

int singleNumber(int* nums, int numsSize){int num = 0,i;for(i=0; i<numsSize; i++){num ^= nums[i];}return num;
}

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

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

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

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

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

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

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

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

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

  5. Leetcode 136. 只出现一次的数字 解题思路及C++实现

    解题思路: 利用异或操作的性质: 1.恒定律:A ^ 0 = A 2.归零率:A ^ A = 0 3.交换律:A ^ B = B ^ A 4.结合律:(A ^ B) ^ C = A ^ (B ^ C) ...

  6. leetcode 136. 只出现一次的数字 c语言

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

  7. Leetcode 136.只出现一次的数字 (每日一题 20210714)

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

  8. leetcode - 136. 只出现一次的数字

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

  9. [leetcode]136. 只出现一次的数字

    我写的: class Solution {public:int singleNumber(vector<int>& nums) {unordered_map<int,int& ...

  10. 134. Leetcode 136. 只出现一次的数字 (位运算-只出现一次的数字相关题目)

    class Solution:def singleNumber(self, nums: List[int]) -> int:res = 0for i in range(len(nums)):re ...

最新文章

  1. mysql 按日期删除数据库_DAY11 - MySQL入门(数据库的增、删、改、查 基本操作)...
  2. Grunt的配置和使用
  3. golang中的权限
  4. 身体里面有多少细胞呢?
  5. 01_Weblogic课程之概念篇:代理服务器,web服务器,应用程序服务器,JNDI概念,JTA概念,Java消息服务,Java验证和授权(JAAS),Java管理扩展,Web客户机,客户机应用程序
  6. OpenCV学习笔记六-提高对比度
  7. 今天的编程语言是怎么来的?
  8. Underscore.js 的模板功能
  9. java default parameter_JAVA菜鸟入门(7) default parameter , float/double vs BigDecimal
  10. 用标号跳出当前多重嵌套循环是否继续执行循环_在Java中如何跳出当前的多重嵌套循环?...
  11. Spark Streaming实现WordCount
  12. 《30天自制操作系统》学习笔记--第8天
  13. 重新理解管理信息化促进企业变革
  14. 利用numpy自带的polyfit和polyval函数进行回归分析
  15. 篮球/NBA 英语词汇大全
  16. JavaScript 设计模式学习第七篇- 单例模式
  17. 六、HTML高级标签
  18. 对于开发软件的NABCD分析
  19. App开发者不再遵循苹果iOS设计惯例
  20. 大疆M210 V2+妙算2-G+LIVOX MID-40使用记录

热门文章

  1. webflux系列--基础
  2. mysql count 排序_SQL进阶排序和窗口函数
  3. 简易 IM 双向通信电脑端 GUI 应用——基于 Netty、JavaFX、多线程技术等
  4. ubuntu tail、history|grep 、alias命令
  5. php编译安装与配置
  6. Exchange与ADFS单点登录 PART 6:Exchange声明规则配置
  7. swfheader 0.10 Released(已更正下载地址)
  8. python sys.argv[]用法
  9. 史上最全PHP正则表达式实例汇总
  10. harris角点检测的学习