博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 136. Single Number
阅读量:5110 次
发布时间:2019-06-13

本文共 683 字,大约阅读时间需要 2 分钟。

Given an array of integers, every element appears twice except for one. Find that single one.

Note:

Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

  这道题目的时间复杂度必须是O(n),并且空间复杂度为O(1),使得不能用排序方法,也不能使用map数据结构。那么只能另辟蹊径,需要用位操作Bit Operation来解此题。

  这里用到逻辑异或的两个性质:

  一:相同的两个int型数据 ^ 之后为0

  二:逻辑异或满足交换律、结合律,即对于题目中的数组可以看成是先把元素排好序相同的放在一块进行异或运算,与元素的参加运算的顺序无关。

  逻辑异或的运算真值表:

输入
运算符
输入
结果
1
0
1
1
1
0
0
0
0
0
1
1

 代码:

public class Solution {    public int singleNumber(int[] nums) {        int ans = 0;        for(int n:nums){            ans ^= n;        }        return ans;    }}

 

 
 

转载于:https://www.cnblogs.com/mxk-star/p/7291703.html

你可能感兴趣的文章
[转]ubuntu下解压zip文件
查看>>
[转]10种常见的软件架构模式
查看>>
从百度统计看到的一些有意思的事情
查看>>
BZOJ3533 [Sdoi2014]向量集 【线段树 + 凸包 + 三分】
查看>>
99乘法表
查看>>
NSRegularExpression iOS自带的正则表达式
查看>>
vue-cli3快速创建项目
查看>>
Android中pendingIntent的深入理解
查看>>
修改配置Solr连接数据库配置
查看>>
使用Windows系统的几个好的习惯
查看>>
实验十九 SCVMM中Hyper-v群集的管理和维护
查看>>
zju——Simple Task
查看>>
AOP概念
查看>>
在ROS系统下,获取tango的RGBD信息和Pose信息
查看>>
Django2第一个工程
查看>>
(转)浅析值类型与引用类型的内存分配
查看>>
Binary Search--二分查找
查看>>
jsp注释<%-- --%>和<!-- -->的区别
查看>>
JS 数字 、中文、 英文、判断
查看>>
数论---快速幂取模
查看>>