博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【03_136】Single Number
阅读量:5077 次
发布时间:2019-06-12

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

感谢:http://www.cnblogs.com/changchengxiao/p/3413294.html

Single Number

Total Accepted: 103007 Total Submissions: 217483 Difficulty: Medium

 

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(1)和不开空间。实在没办法才上网查找,原来是汇编语言的知识,而且C++中还可以直接用。

 

原文:

o(n)的算法只能是线性扫描一遍,可能的相法是位运算。对于异或来说:1. 异或运算是可交换,即 a ^ b = b ^ a2. 0 ^ a = a那么如果对所有元素做异或运算,其结果为那个出现一次的元素,理解是a1 ^ a2 ^ ....

 

所以说,这是终极解法。

 

1 public class Solution { 2     public int singleNumber(int[] A) { 3         // Note: The Solution object is instantiated only once and is reused by each test case. 4         if(A == null || A.length == 0){ 5             return 0; 6         } 7         int result = A[0]; 8          9         for(int i = 1; i < A.length; i++){10             result ^= A[i];11         }12         return result;13     }14 }

 

LeetCode很有趣,希望明天可以自己想出来!

转载于:https://www.cnblogs.com/QingHuan/p/5039577.html

你可能感兴趣的文章
MAC 上升级python为最新版本
查看>>
创业老板不能犯的十种错误
查看>>
Animations介绍及实例
查看>>
判断请求是否为ajax请求
查看>>
【POJ2699】The Maximum Number of Strong Kings(网络流)
查看>>
spring boot配置跨域
查看>>
BZOJ 1996 合唱队(DP)
查看>>
进击吧!阶乘——大数乘法
查看>>
安卓学习资料推荐-25
查看>>
Mysql数据库备份和还原常用的命令
查看>>
关于退出当前页面在火狐的一些问题
查看>>
【项目实施】项目考核标准
查看>>
spring-aop AnnotationAwareAspectJAutoProxyCreator类
查看>>
经典入门_排序
查看>>
Redis Cluster高可用集群在线迁移操作记录【转】
查看>>
二、spring中装配bean
查看>>
VIM工具
查看>>
javascript闭包
查看>>
@Column标记持久化详细说明
查看>>
创建本地yum软件源,为本地Package安装Cloudera Manager、Cloudera Hadoop及Impala做准备...
查看>>