我正在做缺号问题。我不明白为什么leetcode说:输入上的错误答案:[0,1],而所有测试用例在我的编译器上都给出了正确的答案,包括[0,1]。
你可以在这里找到问题:https://leetcode.com/problems/missing-number/
如果有人能帮我,我将不胜感激。
class Solution {
public:
int missingNumber(vector<int>& nums) {
long long B = 0;
int i;
/////count element in vector////
auto it = nums.end();
it--;
int xy = distance(nums.begin(), it);
////////////////////////////
for(auto x : nums){
B = B|(1<<x);
}
for(i=0;i<=xy;i++){
if((B&(1<<i)) == 0){//first bit not set(skip bit 0) - bits represent array indices
return i;
}
}
}
};
您可以这样做,而不是进行那些复杂的位操作。当数组从0开始到n时,可以使用算术级数公式计算从0到n的所有元素的和。
现在,遍历数组并将所有元素相加。从计算的和中减去这个和,你就会得到丢失的数字
int missingNumber(vector<int>& nums) {
//use arithmetic progressions formula
//as the array always starts from zero
//we can take n as nums.size() including the missing number
int n = nums.size();
int sum = (n*(n+1))/2;
//traverse the array and find the sum
int arrSum = 0;
for(auto it : nums){
arrSum += it;
}
//return the sum - arrSum; it gives the missing element
return sum - arrSum;
}