本文主要是介绍LeetCode 268.缺失的数字,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。
示例 1:
输入: [3,0,1]
输出: 2
示例 2:
输入: [9,6,4,2,3,5,7,0,1]
输出: 8
解题思路
- 利用高斯公式:首项加末项的和乘以项数除以2先确定0到n的和,之后减去给定数组的所有元素之和,即得到缺失的元素
Cpp实现
class Solution {
public:int missingNumber(vector<int>& nums) {int l = nums.size();int s = l * (l + 1) / 2;int sum = 0;for(int i = 0;i < l;i++){sum += nums[i];}return s - sum;}
};
解题思路
- 利用异或位运算
Java实现
class Solution {public int missingNumber(int[] nums) {int res = 0;for(int i = 0;i < nums.length;i++){res ^= nums[i] ^ i;}return res ^ nums.length;}
}
这篇关于LeetCode 268.缺失的数字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!