268. Missing Number(Java)
2017-08-11 17:50
141 查看
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?
代码1:
代码2:利用A ^ A = 0,A ^ A ^ B = B,且满足结合律和交换律
代码3:若数组有序,可以考虑用二分搜索
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?
代码1:
class Solution { public int missingNumber(int[] nums) { int len = nums.length; int sum = (1 + len) * len / 2; for (int n : nums) sum -= n; return sum; } }
// 相比于上面的方法可以防止溢出 class Solution { public int missingNumber(int[] nums) { int sum = nums.length; for (int i = 0; i < nums.length; i ++) sum += i - nums[i]; return sum; } }
代码2:利用A ^ A = 0,A ^ A ^ B = B,且满足结合律和交换律
class Solution { public int missingNumber(int[] nums) { int res = nums.length; for (int i = 0; i < nums.length; i ++) { res ^= i ^ nums[i]; } return res; } }
代码3:若数组有序,可以考虑用二分搜索
class Solution { public int missingNumber(int[] nums) { Arrays.sort(nums); int left = 0, right = nums.length, mid = (left + right) / 2; while (left < right) { // mid为本来应该的平均数 mid = (left + right) / 2; // 若实际偏大,则抽走了小的数,则抽走的数在左边 if (nums[mid] > mid) right = mid; // 若实际偏小,则抽走了大的数,则抽走的数在右边 else left = mid + 1; } return left; } }
相关文章推荐
- LeetCode-268. Missing Number (Java)
- leetcode:268. Missing Number(Java)解答
- leetcode-java-268. Missing Number
- 黑马程序员——学习Java基础之 io LineNumberReader 之装饰设计模式
- 268. Missing Number
- 错误:java.lang.UnsupportedClassVersionError: Bad version number in .class file
- java.lang.NumberFormatException: For input string: NaN 什么意思
- java.sql.SQLException: ORA-00932: inconsistent datatypes: expected NUMBER got BINARY
- java jsp 页面读取oracle中number类型科学计数的处理方法
- java 数字格式化:小数点、百分比 NumberFormat Decimalformat
- LeetCode - 268. Missing Number
- [LEETCODE] 268. Missing Number
- [leetcode-287]Find the Duplicate Number(java)
- (Unsupported class version number [52.0] (maximum 51.0, Java 1.7))
- 2018.03.15 leetcode 打卡 #268. Missing Number
- Caused by: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0
- 268. Missing Number
- JAVA错误:java.lang.UnsupportedClassVersionError: Bad version number in .class file
- Caused by: java.lang.NumberFormatException: Invalid double: ""
- java.lang.NumberFormatException: For input string: "1" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang