Missing Number Leetcode 268 Java
2015-09-01 15:23
369 查看
Given an array containing n distinct numbers taken from 0, 1, 2, …, n, find the one that is missing from the array.
For example,
Given nums = [0, 1, 3] return 2.
Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
这道题目和其他题目不同的地方在于,所有的备选数是已知的。所以,切入点就在这。我的第一想法是,将数组中所有的数加起来得到sum1,然后求1,2,3。。。n的和,得到sunm2,然后用sum2-sum1,AP程序如下:
AP之后去看了眼讨论区,然后发现,还有更好的解法,切入点是相同的,但是用的不是求和的方法,而是采用了亦或的方式来做。AP程序如下:
For example,
Given nums = [0, 1, 3] return 2.
Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
这道题目和其他题目不同的地方在于,所有的备选数是已知的。所以,切入点就在这。我的第一想法是,将数组中所有的数加起来得到sum1,然后求1,2,3。。。n的和,得到sunm2,然后用sum2-sum1,AP程序如下:
public class Solution { public int missingNumber(int[] nums) { if(nums==null||nums.length==0) return 0; int len=nums.length; if(len==1){ return nums[0]==0?1:0; } long sum=0; for(int i=0;i<len;i++){ sum+=nums[i]; } return (int)(((len)*(len+1))/2-sum); } }
AP之后去看了眼讨论区,然后发现,还有更好的解法,切入点是相同的,但是用的不是求和的方法,而是采用了亦或的方式来做。AP程序如下:
public int missingNumber(int[] nums) { int sum = 0; for (int i = 0; i <= nums.length; ++i) sum ^= i; for (int i = 0; i < nums.length; ++i) sum ^= nums[i]; return sum; }
相关文章推荐
- java反射机制详解 及 Method.invoke解释
- JVM java虚拟机学习(二)
- Java方法参数(一)
- eclipse 下生成jar包
- StrutsPrepareAndExecuteFilter过滤器和url-pattern设置详解
- myeclipse10的使用须知
- What is JavaServer Pages?
- java 关闭钩子
- spring学习笔记: Spring AOP
- 关于使用maven建立java web项目时,java Resources文件夹上出现红X的现象
- spring学习笔记:bean的配置
- 关于myeclipse10的使用
- spring学习笔记:Spring IOC容器
- spring 学习笔记1
- Eclipse导入所依赖的Android项目
- Spring的注解形式:@Repository
- Eclipse Ctrl+Alt 快捷键失效,解决办法
- 如何做到通过Struts2完成Submit但是画面不跳转
- 串口编程--java层开发demo
- Eclipse设置编译文件.class输出路径