leetcode1005. K 次取反后最大化的数组和
生活随笔
收集整理的這篇文章主要介紹了
leetcode1005. K 次取反后最大化的数组和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一:論語
這個用在自己身上感覺值得反省,很多道理我都能明白 也能講給別人聽 但是很多時候 自己往往做的不好 而且還很容易
自我感動 最近真的很討厭自己這樣 不要自我感動 要正向積累 多去做 多去做 這只是個開始 然后慢慢的長進 再者就是堅持
二:題目
三:上碼
class Solution { public:int largestSumAfterKNegations(vector<int>& nums, int k) {/**思路:1.這里我們首先進行升序處理,如果有負數的話,我們將k用到其上面,如果k還有剩余的話 我們判斷是否有0,如果有0的話就將k全部用到其,如果已經沒有0的話那么就重新重新排序用到第一個元素上*/int cnt = 0;int flag = 0;sort(nums.begin(),nums.end());for(int i = 0; i < nums.size(); i++) {if(nums[i] < 0 && cnt < k) cnt++;// cnt < k防止負數的個數超過我們的k值,if(nums[i] == 0) flag = 1;if(nums[i] > 0) break; }if(cnt == 0 && flag == 0) {//全是正數 無負數int temp = k%2;//如果是奇數的話就會等于1 如果是偶數那么就為0if(temp != 0) nums[0] = -nums[0];}else {for(int i = 0; i < cnt; i++) {nums[i] = -nums[i];k--;}if(k != 0) {//如果k不為0的話sort(nums.begin(),nums.end());int temp = k%2;//如果是奇數的話就會等于1 如果是偶數那么就為0if(temp != 0) nums[0] = -nums[0];}} int sum = accumulate(nums.begin(),nums.end(),0);return sum;} };總結
以上是生活随笔為你收集整理的leetcode1005. K 次取反后最大化的数组和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何下载安装手机版云闪付
- 下一篇: 手机QQ如何隐藏情侣空间功能