leetcode 268. Missing Number
来源:互联网 发布:linux 第二个mysql5.7 编辑:程序博客网 时间:2024/06/04 11:10
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?
package leetcode;public class Missing_Number_268 {public int missingNumber(int[] nums) {int n=nums.length;int[] indexedNums=new int[n+1];for(int i=0;i<n;i++){int number=nums[i];indexedNums[number]=1;}for(int i=0;i<n+1;i++){if(indexedNums[i]==0){return i;}}return -1;}public static void main(String[] args) {// TODO Auto-generated method stubMissing_Number_268 m=new Missing_Number_268();int[] nums=new int[]{0,1,3};System.out.println(m.missingNumber(nums));}}
当然啦,大神怎么可以拘泥于一个方法呢?大神早就总结出4种方法啦!厉害厉害!
1.XOR
public int missingNumber(int[] nums) { int xor = 0, i = 0;for (i = 0; i < nums.length; i++) {xor = xor ^ i ^ nums[i];}return xor ^ i;//最后i的值是nums.length,即与nums.length进行异或}The basic idea is to use XOR operation. We all know that a^b^b =a, which means two xor operations with the same number will eliminate the number and reveal the original number.
In this solution, I apply XOR operation to both the index and value of the array. In a complete array with no missing numbers, the index and value should be perfectly corresponding( nums[index] = index), so in a missing array, what left finally is the missing number.
2.SUM
public int missingNumber(int[] nums) { //sum int len = nums.length; int sum = (0+len)*(len+1)/2; for(int i=0; i<len; i++) sum-=nums[i]; return sum;}3.Binary Search
public int missingNumber(int[] nums) { //binary search Arrays.sort(nums); int left = 0, right = nums.length, mid= (left + right)/2; while(left<right){ mid = (left + right)/2; if(nums[mid]>mid) right = mid; else left = mid+1; } return left;}
阅读全文
0 0
- [leetcode] 268.Missing Number
- 【leetcode】268. Missing Number
- [leetcode] 268. Missing Number
- Leetcode 268. Missing Number
- 268. Missing Number LeetCode
- LeetCode 268. Missing Number
- 【LeetCode】268. Missing Number
- [LeetCode]268. Missing Number
- LeetCode *** 268. Missing Number
- 【leetcode】268. Missing Number
- leetcode-268. Missing Number
- LeetCode-268.Missing Number
- LeetCode 268. Missing Number
- [Leetcode] 268. Missing Number
- 【leetcode】268. Missing Number
- leetcode 268. Missing Number
- 【leetcode】268. Missing Number
- leetcode- 268. Missing Number
- Java常用的正则表达式与语法
- LightOJ
- more effective c++之Item M1:指针与引用的区别
- mysql存储过程游标嵌套示例
- 同时启动2个tomcat注意
- leetcode 268. Missing Number
- java微信公众号支付授权
- 多维数组的传递
- poj3281—Dining(最大流)
- RxJava2_2:流程及关键对象的理解
- 基于协同过滤的推荐系统
- node.js快速创建http服务器
- 重载,重写(覆盖),隐藏
- python爬虫学习笔记(1)-爬取糗事百科