Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b73a7da

Browse files
添加 1005.K次取反后最大化的数组和.md C版本
1 parent ec92c7b commit b73a7da

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

‎problems/1005.K次取反后最大化的数组和.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,5 +211,44 @@ var largestSumAfterKNegations = function(nums, k) {
211211
};
212212
```
213213

214+
### C
215+
```c
216+
#define abs(a) (((a) > 0) ? (a) : (-(a)))
217+
218+
// 对数组求和
219+
int sum(int *nums, int numsSize) {
220+
int sum = 0;
221+
222+
int i;
223+
for(i = 0; i < numsSize; ++i) {
224+
sum += nums[i];
225+
}
226+
return sum;
227+
}
228+
229+
int cmp(const void* v1, const void* v2) {
230+
return abs(*(int*)v2) - abs(*(int*)v1);
231+
}
232+
233+
int largestSumAfterKNegations(int* nums, int numsSize, int k){
234+
qsort(nums, numsSize, sizeof(int), cmp);
235+
236+
int i;
237+
for(i = 0; i < numsSize; ++i) {
238+
// 遍历数组,若当前元素<0则将当前元素转变,k--
239+
if(nums[i] < 0 && k > 0) {
240+
nums[i] *= -1;
241+
--k;
242+
}
243+
}
244+
245+
// 若遍历完数组后k还有剩余(此时所有元素应均为正),则将绝对值最小的元素nums[numsSize - 1]变为负
246+
if(k % 2 == 1)
247+
nums[numsSize - 1] *= -1;
248+
249+
return sum(nums, numsSize);
250+
}
251+
```
252+
214253
-----------------------
215254
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /