美文网首页每日打卡
2021-12-03 1005. K 次取反后最大化的数组和

2021-12-03 1005. K 次取反后最大化的数组和

作者: 16孙一凡通工 | 来源:发表于2021-12-03 11:02 被阅读0次

    硬核模拟出来,其实不太喜欢这种思路,可是也没啥思路做,所以就模拟做了一下。
    有点类似于昨天的排序思路
    java版本:

    class Solution {
        public int largestSumAfterKNegations(int[] nums, int k) {
    
            // 统计负数的个数count 和k
            // 
    
            int n=nums.length;
            int count=0;
            int[][] arr=new int[n][2];
            
            for(int i=0;i<n;i++){
                if(nums[i]<0){
                   arr[i][0]=-nums[i];
                   count++;
                    arr[i][1]=-(i+1);
                     
                   
                }else{
                      arr[i][0]=nums[i];
                      arr[i][1]=i+1;
                }
            }
    
            // 绝对值排序
            Arrays.sort(arr,(a,b)->b[0]-a[0]);
            int res=0;
            if(k<count){
         for(int i=0;i<n;i++){
            
             if(arr[i][1]<0){           
                 k--;
             }
             if(k<0 && arr[i][1]<0){
             arr[i][0]=-arr[i][0];
             }
             res+=arr[i][0]; 
            }
            return  res;
            }
            int res_=(k-count)%2;
             for(int i=0;i<n;i++){
                //  System.out.println(arr[i][0]);
              res+=arr[i][0];
             }
             res=(res_==0)?res:res-arr[n-1][0]*2;
             return res;
    
        }
    }
    

    相关文章

      网友评论

        本文标题:2021-12-03 1005. K 次取反后最大化的数组和

        本文链接:https://www.haomeiwen.com/subject/rumpxrtx.html