LeetCode: 268. Missing Number
2017-07-10 11:13
471 查看
LeetCode: 268. Missing Number
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.
自己的答案,13ms:
最快的答案,1ms:
3 different ideas: XOR, SUM, Binary Search. Java code
xor:
求和:
二分查找:
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.
自己的答案,13ms:
public class Solution { public int missingNumber(int[] nums) { if (nums == null || nums.length == 0) { return 0; } Arrays.sort(nums); int i = 0; for (i = 0; i < nums.length; i++) { if (nums[i] != i) { return i; } } return i; } }
最快的答案,1ms:
public class Solution { public int missingNumber(int[] nums) { int sum = 0; for (int i = 0; i < nums.length; i++) { sum += nums[i]; } return (nums.length * (nums.length + 1)) / 2 - sum; } }
3 different ideas: XOR, SUM, Binary Search. Java code
xor:
public int missingNumber(int[] nums) { //xor int res = nums.length; for(int i=0; i<nums.length; i++){ res ^= i; res ^= nums[i]; } return res; }
求和:
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; }
二分查找:
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; }
相关文章推荐
- 【LeetCode】268. Missing Number
- LeetCode 268. Missing Number
- LeetCode 268. Missing Number (缺失的数字)
- LeetCode 268. Missing Number
- Leetcode-268. Missing Number
- [leetcode: Python]268. Missing Number
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 【Leetcode】268. Missing Number
- leetcode 268. Missing Number
- [leetcode] 268. Missing Number
- leetcode 268. Missing Number
- LeetCode268. Missing Number
- LeetCode之268. Missing Number
- LeetCode 268. Missing Number
- <LeetCode OJ> 268. Missing Number
- leetcode268. Missing Number
- LeetCode-268. Missing Number (Java)
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 【LeetCode】268. Missing Number
- LeetCode 268. Missing Number