网站建设20推广,免费网页软件,建设银行首页 网站,网站关键词设置多少合适LeetCode 1005.K取反后最大化的数组和
题目链接#xff1a;
LeetCode 1005.K取反后最大化的数组和
解题思路#xff1a;
先处理负数#xff0c;在处理最小的数。
代码#xff1a;
class Solution {
public:int largestSumAfterKNegations(vectorint num…LeetCode 1005.K取反后最大化的数组和
题目链接
LeetCode 1005.K取反后最大化的数组和
解题思路
先处理负数在处理最小的数。
代码
class Solution {
public:int largestSumAfterKNegations(vectorint nums, int k) {sort(nums.begin(), nums.end());int result 0;for (int i 0; i nums.size(); i) {if (nums[i] 0 k 0) {nums[i] -nums[i];k--;}result nums[i];}sort(nums.begin(), nums.end());result - nums[0] * (k % 2 0 ? 0 : 2);return result;}
};
LeetCode 134.加油站
题目链接
LeetCode 134.加油站
解题思路
total_sum记录能否走到终点cur_sum为判断起始点位置为小于0的后一个点。
代码
class Solution {
public:int canCompleteCircuit(vectorint gas, vectorint cost) {int size gas.size();int total_sum 0, cur_sum 0;int Index 0;for (int i 0; i size; i) {cur_sum gas[i] - cost[i];total_sum gas[i] - cost[i];if (cur_sum 0) {cur_sum 0;Index i1;}}if (total_sum 0)return -1;return Index;}
};
LeetCode 135.分发糖果
题目链接
LeetCode 135.分发糖果
解题思路
左右两边分别计算应该满足的糖果数量。先从左往右如果比前面的大就加一否则则置一。
从右往左如果比前面的大就加一否则取和原来相比的最大的。
代码
class Solution {
public:int candy(vectorint ratings) {int size ratings.size();vectorint candy(size, 1);for (int i 1; i size; i) {if (ratings[i - 1] ratings[i]) {candy[i] candy[i - 1] 1; }}for (int i size - 2; i 0; i--) {if (ratings[i] ratings[i 1]) {candy[i] max(candy[i], candy[i 1] 1);}}int result 0;for (int i 0; i size; i)result candy[i];return result;}
};