1299. 将每个元素替换为右侧最大元素

动态规划
1 是从左往右,可以转换一下思维从右往左,这样比较次数不就是下降很大吗?
2这个题的重点就是转移方程 dp[i]=max(dp[i+1],arr[i]) 表示的就是后面的最大值和当前元素最大值哪个大 就是当前索引的最大值
package mainimport "fmt"func max(a,b int)int{if a>b{return a}return b}func replaceElements(arr []int) []int {if len(arr)==0{return arr}dp:=make([]int,len(arr)+1)dp[len(dp)-1]=-1for i:=len(arr)-1;i>0;i--{dp[i]=max(dp[i+1],arr[i])}return dp[1:]}func main() {fmt.Println(replaceElements([]int{400}))fmt.Println(replaceElements([]int{17,18,5,4,6,1}))}

或者这样
func replaceElements(arr []int) []int {if len(arr)==0{return arr}dp:=make([]int,len(arr))dp[len(arr)-1]=-1for i:=len(arr)-2;i>=0;i--{dp[i]=max(dp[i+1],arr[i+1])}return dp}
