思路和代码表达都写在下面代码里了
int cmp(int *a, int *b){
return *a - *b;
}
//在石头数量大于2时,每一轮操作前对数组进行排序
int lastStoneWeight(int* stones, int stonesSize){
while(stonesSize > 2) {
qsort(stones, stonesSize, sizeof(int), cmp);
//比较最后两个数
//若最后一个数较大,则让倒数第二个数等于两数相减所得值,数组大小减一
//若两数相等,直接让数组大小减二
if (stones[stonesSize - 2] != stones[stonesSize - 1]) {
stones[stonesSize - 2] = stones[stonesSize - 1] - stones[stonesSize - 2];
stonesSize--;
} else {
stonesSize -= 2;
}
}
//直到数组长度不大于二时
//若等于一则直接返回该数
//若等于二,则返回两数差的绝对值(若两数相等,相减得零)
if(stonesSize == 1) {
return stones[0];
} else if (stonesSize == 2){
return (stones[0] - stones[1])>0?(stones[0] - stones[1]):(stones[1] - stones[0]);
} else {
return 0;
}
}