代码随想录算法打卡第二十九天, 新手自我记录一下刷题历程, 仅为自我打卡使用.
class Solution {
private:
static bool cmp(int a, int b) {
return abs(a) > abs(b);
}
public:
int largestSumAfterKNegations(vector<int>& nums, int k) {
sort(nums.begin(), nums.end(), cmp);
for (int i = 0; i < nums.size(); ++i) {
if (nums[i] < 0 && k > 0) {
nums[i] *= -1;
k--;
}
}
if (k % 2 == 1) nums[nums.size() - 1] *= -1;
int sum = 0;
for (int num: nums) sum += num;
return sum;
}
};
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
int sum = 0;
int rest = 0;
int start = 0;
for (int i = 0; i < gas.size(); ++i) {
rest += gas[i] - cost[i];
sum += gas[i] - cost[i];
if (rest < 0) {
rest = 0;
start = i + 1;
}
}
if (sum < 0) return -1;
return start;
}
};
class Solution {
public:
int candy(vector<int>& ratings) {
vector<int> candys(ratings.size(), 1);
for (int i = 1; i < ratings.size(); ++i) {
if (ratings[i] > ratings[i - 1]) {
candys[i] = max(candys[i - 1] + 1, candys[i]);
}
}
for (int i = ratings.size() - 2; i >= 0; --i) {
if (ratings[i] > ratings[i + 1]) {
candys[i] = max(candys[i + 1] + 1, candys[i]);
}
}
int sum = 0;
for (int num: candys) sum += num;
return sum;
}
};
希望还能再坚持一天!