classSolution{publicintlargestSumAfterKNegations(int[] nums,int k){if(nums.length ==1)return k %2==0? nums[0]:-nums[0];Arrays.sort(nums);int sum =0;int index =0;for(int i =0; i < k; i++){if(i < nums.length -1&& nums[index]<0){
nums[index]=-nums[index];if(nums[index]>=Math.abs(nums[index +1])) index++;continue;}
nums[index]=-nums[index];}for(int i =0; i < nums.length; i++){
sum += nums[i];}return sum;}}classSolution{publicintlargestSumAfterKNegations(int[]A,intK){if(A.length ==1)returnK%2==0?A[0]:-A[0];Arrays.sort(A);int sum =0;int idx =0;for(int i =0; i <K; i++){//不取最后一个位置,因为最后一个位置是最大的if(i <A.length -1&&A[idx]<0){A[idx]=-A[idx];if(A[idx]>=Math.abs(A[idx +1])) idx++;//跳出循环后,由于idx已经++,则再次进入for时,判断的就是下一个位置了continue;}//如果发现没有值是小于0的了,则为了实现k次取反,只能操作当前的值(将当前的值取反) A[idx]=-A[idx];}//统计sumfor(int i =0; i <A.length; i++){
sum +=A[i];}return sum;}}