136. 只出现一次的数字(关于异或的使用)
136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
博主一开始写这道题的时候用了一个比较笨的方法,造成花费的时间很长(简直惨不忍睹,但好歹通过了…)
class Solution {public int singleNumber(int[] nums) {int i=0,n=0;for (int x=0;x<nums.length;x++){n=0;for (int y=0;y<nums.length;y++){if (nums[x]==nums[y]){n++;}}if (n<=1){i=x;}}return nums[i];}
}
后来看题解的时候发现各种大神解法,下面我就和大家分享使用异或操作的解法。
异或运算:
0^n=n
n^n=0
任何数与0进行异或,为它本身,两个相同的数进行异或运算,会得到0。
聪明的朋友或许已经想到了,在这题中我们完全可以使用异或运算(异或运算满足交换律),如下:
例:
[4,1,2,1,2]
4 ^ 1 ^ 2 ^ 1 ^ 2 = 1 ^ 1 ^ 2 ^ 2 ^ 4 = 0 ^ 4 = 4
所以,这题只要简单地用一重循环进行异或运算即可以得出那个只出现一次的数字,代码如下:
class Solution{public int singleNumber(int[] nums) {int a = nums[0];for (int i = 1; i < nums.length; i++) {a = a ^ nums[i];}return a;}
}
136. 只出现一次的数字(关于异或的使用)相关推荐
- 力扣 136. 只出现一次的数字 【异或运算】
最简单的思路: 用数组的每一个数字遍历整个数组来统计每个数字的个数. 当个数为1的时候输出它. 很显然的是这种方法的时间复杂度为O(n2) 那么有没有一种快速的方法呢? 用位运算.用异或来求就方便的多 ...
- LeetCode 136. 只出现一次的数字(异或^)
文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明:你的算法应该具有线性时间复杂度. 你 ...
- LeetCode:136. 只出现一次的数字
136. 只出现一次的数字 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 1.法一: 遍历 nums\text{nums}nums 中的每一个元素 如果某个 nums\text{nums} ...
- 136. 只出现一次的数字【我亦无他唯手熟尔】
136. 只出现一次的数字 136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素.说明:你的算法应该具有线性时间复杂度. 你 ...
- 136. 只出现一次的数字
136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现 ...
- Java实现 LeetCode 136 只出现一次的数字
136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现 ...
- Leetcode题库 136.只出现一次的数字(异或 C实现)
文章目录 思路 代码 思路 两相同数字异或时为0, 将数组中数字挨个儿异或, 最后仅会剩下那个只出现一次的数字 代码 int singleNumber(int* nums, int numsSize) ...
- 文巾解题 136. 只出现一次的数字
1 题目描述 2 解题思路 2.1 count函数 class Solution:def singleNumber(self, nums: List[int]) -> int:for i in ...
- Leetcode:NO.136 只出现一次的数字
题目 链接:https://leetcode-cn.com/problems/single-number 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次 ...
最新文章
- 百度搜索引擎广告SEM调用架构示意图
- CMU赵越 关于异常检测的分享!
- com.android.builder.packaging.DuplicateFileException
- android activity根节点addview_Activity问你4个问题,你敢回答吗?
- 李宏毅机器学习作业2:Winner还是Losser(含训练数据)
- xalan_如何以10倍速加速Apache Xalan的XPath处理器
- python基础:python循环、三元运算、字典、文件操作
- 基于https国密算法构建安全数据传输链路
- Linux环境下虚拟化之KVM常用命令
- AI也能精彩表达:几种经典文本生成模型一览
- python3制作歌词解析器
- 西门子g120变频器接线图_西门子G120变频器通过IOP-2面板初始设置
- 【WordExcel】【1】更新Word的目录
- 高价值的聚合支付源码修复版+带后台/语音播报
- 吉林大学前卫南区计算机宿舍,睡过双一流学生宿舍后,把宿舍照片分享给你们,看看你们想去的学校宿舍长啥样!...
- 用python写微信红包脚本_python 实现模拟微信发红包
- mysql-server-5.6 deb_linux下安装mysql-server-5.6的问题
- 黄健翔激情解说之中国移动版、石化版、房地产版
- Unity API通读 CustomEditor
- 基于Vue的省市区三联的地区选择器V-Distpicker的使用及踏过的坑...