春节刷题day3:LeetCode
461. 汉明距离
136. 只出现一次的数字
448. 找到所有数组中消失的数字
53. 最大子序和
70. 爬楼梯
1. 两数之和
1、461. 汉明距离
class Solution {
public:
int hammingDistance(int x, int y) {
int ans = 0;
for(int i = 0; ; i++){
if(i == 32) break;
int k = (1 << i);
if(k > max(x, y)) break;
if( ( (k & x) ^ (k & y) ) == k) ans++;
}
return ans;
}
};
2、136. 只出现一次的数字
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ans = 0;
for(int i = 0; i < nums.size(); i++){
ans ^= nums[i];
}
return ans;
}
};
3、448. 找到所有数组中消失的数字
class Solution {
public:
vector<int> findDisappearedNumbers(vector<int>& nums) {
vector<int> ans;
for(int i = 0; i < nums.size(); i++){
nums[abs(nums[i]) - 1] = -abs(nums[(abs(nums[i]) - 1)]);
}
for(int i = 0; i < nums.size(); i++){
if(nums[i] > 0) ans.push_back(i + 1);
}
return ans;
}
};
4、53. 最大子序和
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int sum = 0, ans = -INT_MAX;
bool ok = false;
for(int i = 0; i < nums.size(); i++){
sum += nums[i];
ans = max(ans, sum);
if(sum < 0) sum = 0;
if(nums[i] >= 0) ok = true;
}
if(!ok){
for(int i = 0; i < nums.size(); i++) ans = max(ans, nums[i]);
}
return ans;
}
};
5、70. 爬楼梯
class Solution {
public:
int climbStairs(int n) {
int ans;
if(n == 1) return 1;
else if(n == 2) return 2;
else{
int a = 1, b = 2;
for(int i = 3; i <= n; i++){
ans = a + b;
a = b; b = ans;
}
return ans;
}
}
};
6、1. 两数之和
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> p;
vector<int> ans;
for(int i = 0; i < nums.size(); i++) p[nums[i]] = p[target - nums[i]]= -1;
for(int i = 0; i < nums.size(); i++){
if(p[target - nums[i]] >= 0){
ans.push_back(i);
ans.push_back(p[target - nums[i]]);
break;
}
p[nums[i]] = i;
}
return ans;
}
};
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector <int> ans; bool flag = false;
int i, j, n = nums.size();
for(i = 0; i < n; i++){
for(j = i + 1; j < n; j++){
if(nums[i] + nums[j] == target){
ans.push_back(i); ans.push_back(j);
flag = true; break;
}
}
if(flag) break;
}
return ans;
}
};
2021/2/8完结(动力不足,坚持下来好难,明天看看计网的知识吧)。