立志重刷代码随想录60天冲冲冲!!——第二十九天
1005. K 次取反后最大化的数组和
class Solution { public: bool static cmp(int a, int b) { return abs(a) > abs(b); } int largestSumAfterKNegations(vector<int>& nums, int k) { sort(nums.begin(), nums.end(), cmp); for (int i = 0; i < nums.size(); i++) { if (k > 0 && nums[i] < 0) { nums[i] = -nums[i]; k--; } } // 可以用while(k--),但效果不如取余快 if (k % 2 == 1) nums[nums.size()-1] = -nums[nums.size()-1]; int sum = 0; for (int i = 0; i < nums.size(); i++) { sum += nums[i]; } return sum; } };
860. 柠檬水找零
判断所有可能的条件即可
class Solution { public: bool lemonadeChange(vector<int>& bills) { if (bills[0] != 5) return false; unordered_map<int, int> umap; for (int i = 0; i < bills.size(); i++) { if (bills[i] == 5){ umap[bills[i]]++; } else if (bills[i] == 10) { umap[bills[i]]++; umap[5]--; if (umap[5] < 0) return false; } else if (bills[i] == 20) { umap[bills[i]]++; if (umap[5] >= 1 && umap[10] >= 1) { umap[5] -= 1; umap[10] -= 1; } else if (umap[5] >= 3) { umap[5] -= 3; } else return false; } } return true; } };
代码随想录更新 文章被收录于专栏
冲冲冲冲冲冲!