题目描述:
给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。
完成所有替换操作后,请你返回这个数组。
示例:
输入:arr = [17,18,5,4,6,1]
输出:[18,6,6,6,1,-1]
提示:
1 <= arr.length <= 10^4
1 <= arr[i] <= 10^5
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/replace-elements-with-greatest-element-on-right-side
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解答:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* replaceElements(int* arr, int arrSize, int* returnSize){
*returnSize = arrSize;
int i = 0;
int j = 0;
int *res = (int*)malloc(sizeof(int) * arrSize);
for(i = 0;i < arrSize;i++){
res[i] = arr[i];
}
for(i = 1;i < arrSize;i++){
for(j = i + 1;j <arrSize;j++){
if(arr[i] < arr[j]){
arr[i] = arr[j];
}
}
res[i - 1] = arr[i];
}
res[arrSize - 1] = -1;
return res;
}
运行结果: