leetcode解题之268# Missing NumberJava版 (找出0~N中缺少的数字)
2017-03-19 13:46
239 查看
268. Missing Number
Given an array containing n distinct numbers taken from0, 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?
一个数组包含了从0到n个不同的数字,总共(n+1)个数字,但是其中缺少了一个数字,找出这个数字。题目要求线性时间复杂度,空间复杂度为常数。
相比于从【0...n】的数组,该数组缺少了一个数,那么计算出【0...n】的数组的和,再减去待计算数组的和,那么缺少的数就出来了。
public int missingNumber(int[] nums) { // i的范围是0~nums.length-1,算上nums.length(N)就是0~N所有数字 int res = nums.length; for (int i = 0; i < nums.length; i++) { res += (i - nums[i]); } return res; }
// 使用额外的空间 public int missingNumber(int[] nums) { Map<Integer, Boolean> map = new HashMap<>(); // 初始化0~N为false for (int i = 0; i <= nums.length; i++) map.put(i, false); // 出现的数字把value置为true for (int i = 0; i < nums.length; i++) map.put(nums[i], true); // 返回为false 的数字 for (int i = 0; i <= nums.length; i++) { if (!map.get(i)) return i; } return -1; }
相关文章推荐
- leetcode解题之448. Find All Numbers Disappeared in an Array Java版 (找出缺少的数字)
- leetCode 7. Reverse Integer (数字反转) 解题思路与方法
- leetCode 18.4Sum (4数字和) 解题思路和方法
- 程序员面试金典——解题总结: 9.18高难度题 18.9随机生成一些数字并传入某个方法。编写一个程序,每当收到新数字时,找出并记录中位数。
- leetcode解题之 15. 3Sum Java版(结果为目标值的三个数字)
- leetcode解题之 12&13. Integer to Roman Java版(罗马数字和数字的转换)
- 解题笔记(24)——找出数组中两个只出现一次的数字(数组)
- leetcode解题之215. Kth Largest Element in an Array java 版(第k大的数字)
- 程序员面试金典——解题总结: 9.17中等难题 17.4编写一个方法,找出两个数字中最大的那一个。不得使用if-else或其他比较运算符。
- [LeetCode] Find All Numbers Disappeared in an Array 找出数组中所有消失的数字
- leetcode解题之 18. 4Sum Java版(结果是目标值的四个数字和)
- leetCode 9.Palindrome Number (回文数字) 解题思路和方法
- 解题报告:LeetCode Search in Rotated Sorted Array II(循环数字查找)
- 输入一串数字找出其中缺少的最小的两个数
- 程序员面试金典——解题总结: 9.18高难度题 18.6设计一个算法,给定10亿数字,找出最小的100万个数字。假定计算机内存足以容纳全部10亿个数字。
- Leetcode 402. Remove K Digits 删除K个数字 解题报告
- 【LeetCode】- Single Number(从数组中找出只出现一次的数字)
- 【leetcode】数组中找出只出现一次的数字(Single Number)
- Leetcode 357. Count Numbers with Unique Digits 统计没有重复数字的数 解题报告
- leetcode解题之374. Guess Number Higher or Lower Java版 (猜数字大小二分查找)