2020-09-06
第一题: 十进制整数的反码
class Solution {
public:
int bitwiseComplement(int N) {
int temp1 = N;
int temp2 = 1;
if(N==0) return 1;
while(temp1>0) {
N^=temp2;
temp2<<=1;
temp1>>=1;
}
return N;
}
};
第二题:最小移动次数使数组元素相等
class Solution {
public:
int minMoves(vector<int>& nums) {
int min = nums[0];
long long result = nums[0];
for(int i = 1; i < nums.size(); i++) {
result += nums[i];
if(nums[i] < min) {
min = nums[i];
}
}
return result- min*nums.size();
}
};
第三题:最少移动次数使数组元素相等 II
class Solution {
public:
int minMoves2(vector<int>& nums) {
sort(nums.begin(),nums.end());
int i = 0;
int j = nums.size()-1;
int result = 0;
while(i<j) {
result += nums[j--]-nums[i++];
}
return result;
}
};
2020-09-07
第一题:错误的集合
class Solution {
public:
vector<int> findErrorNums(vector<int>& nums) {
sort(nums.begin(),nums.end());
int tmp1;
int lost;
int sum = 0;
int repet;
for(int i = 0; i < nums.size()-1; i++) {
if(nums[i] == nums[i+1]) repet = nums[i];
sum += nums[i];
}
sum+=nums[nums.size()-1];
lost = (nums.size() + 1)*nums.size() / 2 - (sum - repet); //eg. 错误集合 1 2 2 4 已找到repet=2,sum-repet(错误集合剔除重复元素2,即1 2 4),
return {repet,