268. Missing Number(Java)
来源:互联网 发布:卡盟源码带后台2016 编辑:程序博客网 时间:2024/06/07 02:08
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:
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; }}
阅读全文
0 0
- 268. Missing Number(java)
- 268. Missing Number(Java)
- leetcode-java-268. Missing Number
- LeetCode-268. Missing Number (Java)
- leetcode:268. Missing Number(Java)解答
- 【Leetcode】:268. Missing Number 问题 in JAVA
- (java)Missing Number
- [leetcode] 268.Missing Number
- 【leetcode】268. Missing Number
- [leetcode] 268. Missing Number
- 268. Missing Number
- Leetcode 268. Missing Number
- 268. Missing Number LeetCode
- LeetCode 268. Missing Number
- 268. Missing Number
- 【LeetCode】268. Missing Number
- 268. Missing Number
- [LeetCode]268. Missing Number
- [dhtmlxGant(甘特图)开发手册]第一篇——如何使用dhtmlxGantt
- 简单配置.htaccess就可以实现的10个功能
- webpack 3 最终版
- js获取文件上传路径(解决出现fakepath的问题)
- PHP性能如何实现全面优化
- 268. Missing Number(Java)
- 类和对象_学习笔记
- 关于日期时间格式的显示问题(python)
- 一致性hash
- FIDO Metadata Statements(译)
- 多项式求和
- web常用的常用缓存技术
- SparkSQL---UDF(java)
- ArcGIS Server无法启动, 错误1069:由于登录失败而无法启动服务