package com.leetcode.easy;
/**
* 〈1299. 将每个元素替换为右侧最大元素〉
* 给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。
* 完成所有替换操作后,请你返回这个数组。
* 示例:
* 输入:arr = [17,18,5,4,6,1]
* 输出:[18,6,6,6,1,-1]
* @author PitterWang
* @create 2020/5/11
* @since 1.0.0
*/
public class ReplaceElements {
public static void main(String[] args) {
int[] num = {17,18,5,4,6,1};
System.out.println(num.length);
int[] i = replaceElementsNew(num);
for (int i1 : i) {
System.out.println(i1);
}
}
public static int[] replaceElements(int[] arr) {
int[] num = new int[arr.length];
for (int i = 0; i < arr.length;i++){
int max = 0;
if( i == arr.length - 1){
max = -1;
}else{
max = arr[i + 1];
for (int j = i+1;j<arr.length;j++){
if(max < arr[j]){
max = arr[j];
}
}
}
num[i] = max;
}
return num;
}
/***
* 从右往左遍历(巧妙)
* @param arr
* @return
*/
public static int[] replaceElementsNew(int[] arr) {
int max = -1;
int[] res = new int[arr.length];
for (int i = arr.length - 1; i >= 0; i--) {
res[i] = max;
max = arr[i] > max ? arr[i] : max;
}
return res;
}
}
1299. 将每个元素替换为右侧最大元素
最新推荐文章于 2021-04-30 15:05:11 发布