春节刷题day16:LeetCode
面试题 16.17. 连续数列
面试题 17.01. 不用加号的加法
面试题 01.03. URL化
面试题 10.01. 合并排序的数组
面试题 17.16. 按摩师
1、面试题 16.17. 连续数列
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int ans = 0, sum = 0, cnt = nums.size();
for(int i = 0; i < nums.size(); i++){
sum += nums[i];
if(sum <= 0){
sum = 0;
cnt--;
}
ans = max(ans, sum);
}
if(!cnt){
ans = nums[0];
for(int i = 0; i < nums.size(); i++) ans = max(ans, nums[i]);
return ans;
}
return ans;
}
};
2、面试题 17.01. 不用加号的加法
class Solution {
public:
int add(int a, int b) {
while(b != 0){
auto carry = (unsigned int)(a & b) << 1;
a ^= b;
b = carry;
}
return a;
}
};
3、面试题 01.03. URL化
class Solution {
public:
string replaceSpaces(string S, int length) {
string ans;
for(int i = 0; i < length; i++){
if(S[i] == ' ') ans += "%20";
else ans += S[i];
}
return ans;
}
};
4、面试题 10.01. 合并排序的数组
class Solution {
public:
void merge(vector<int>& A, int m, vector<int>& B, int n) {
for(int i = m + n - 1; i >= 0; i--){
if(!n || !m) break;
if(A[m - 1] > B[n - 1]){
A[i] = A[m - 1]; m--;
}else{
A[i] = B[n - 1]; n--;
}
if(!n || !m) break;
}
if(m == 0){
for(int i = 0; i < n; i++) A[i] = B[i];
}
}
};
5、面试题 17.16. 按摩师
class Solution {
public:
int massage(vector<int>& nums) {
int ans = 0;
int size = nums.size();
if(size == 0) return 0;
else if(size == 1) return nums[0];
else if(size == 2) return max(nums[0], nums[1]);
else{
int a = nums[0], b = max(nums[0], nums[1]);
for(int i = 2; i < size; i++){
ans = max(b, a + nums[i]);
a = b; b = ans;
}
}
return ans;
}
};
2021/2/23完结。