题目
题目链接:
https://www.nowcoder.com/practice/a01abbdc52ba4d5f8777fb5dae91b204
思路
不难看出该题可以使用动态规划的方式解题。
在循环数组的过程中,记录截止到当前位置-1的最小值,
然后用当前的值去计算最大的差值。
Java代码
import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param A int整型一维数组* @param n int整型* @return int整型*/public int getDis (int[] A, int n) {//不难看出该题可以使用动态规划的方式解题。//在循环数组的过程中,记录截止到当前位置-1的最小值,// 然后用当前的值去计算最大的差值。int ans = 0;int minNum = A[0]; //假设最小的是数是A[0]for (int i = 1; i < n ; i++) {ans = Math.max(ans, A[i] - minNum);minNum = Math.min(minNum, A[i]);}return ans;}
}
Go代码
package main/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param A int整型一维数组* @param n int整型* @return int整型*/
func getDis(A []int, n int) int {//不难看出该题可以使用动态规划的方式解题。//在循环数组的过程中,记录截止到当前位置-1的最小值,// 然后用当前的值去计算最大的差值。ans := 0minNum := A[0] //假设最小的数是A[0]for i := 1; i < n; i++ {curDiff := A[i] - minNumif curDiff > ans {ans = curDiff}if minNum > A[i] {minNum = A[i]}}return ans
}
PHP代码
<?php/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param A int整型一维数组 * @param n int整型 * @return int整型*/
function getDis( $A , $n )
{//不难看出该题可以使用动态规划的方式解题。//在循环数组的过程中,记录截止到当前位置-1的最小值,// 然后用当前的值去计算最大的差值。$ans = 0;$minNum=$A[0]; //假设最小的数是A[0]for($i=1;$i<$n;$i++){$diff = $A[$i] -$minNum;if($diff > $ans) {$ans = $diff;}if($minNum > $A[$i]){$minNum = $A[$i];}}return $ans;
}