Update 1005.K次取反后最大化的数组和.md

This commit is contained in:
fw_qaq
2023-03-14 12:33:05 +08:00
committed by GitHub
parent 549d37a54e
commit 411ef134a7

View File

@ -231,23 +231,18 @@ var largestSumAfterKNegations = function(nums, k) {
```Rust ```Rust
impl Solution { impl Solution {
pub fn largest_sum_after_k_negations(nums: Vec<i32>, k: i32) -> i32 { pub fn largest_sum_after_k_negations(mut nums: Vec<i32>, mut k: i32) -> i32 {
let mut nums = nums; nums.sort_by_key(|b| std::cmp::Reverse(b.abs()));
let mut k = k; for v in nums.iter_mut() {
let len = nums.len(); if *v < 0 && k > 0 {
nums.sort_by(|a, b| b.abs().cmp(&a.abs())); *v *= -1;
for i in 0..len {
if nums[i] < 0 && k > 0 {
nums[i] *= -1;
k -= 1; k -= 1;
} }
} }
if k % 2 == 1 { nums[len - 1] *= -1; } if k % 2 == 1 {
let mut result = 0; *nums.last_mut().unwrap() *= -1;
for num in nums {
result += num;
} }
result nums.iter().sum()
} }
} }
``` ```