268.缺失数字
题目
给定一个包含 0, 1, 2, ..., n
中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。
示例 1:
复制
1 | 输入: [3,0,1] |
示例 2:
复制
1 | 输入: [9,6,4,2,3,5,7,0,1] |
说明: 你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?
思路
这道题的思路有很多,我挑了最简单的两个来写.
- 直接对输入的整型数组进行排序,排序了之后与0-n的序列进行逐个比较,如果遇到不相等,那就说明找到了这个缺失的数字.
- 由于题目说明有且仅有一个数是缺失的,所以我们如果求出了不缺失情况下的和,减去现在数组的和,差值就是这个缺失的数字,而且由于这个0-n序列是一个等差数列,求和可以直接使用公式.
代码
排序法:
1 | public int MissingNumber(int[] nums) |
求和法:
1 | public int MissingNumber(int[] nums) |