一个简单的DP,对于每一个数字而言都有两种状态:选或不选,只需要从头至尾遍历,计算选择或不选当前位的结果,选择其中更大的值保存进dp数组,最终输出dp数组的最后一个元素即可。 这里要注意数据可能为负数,当整个数组都只有负数时一个都不选才是最优解,因此需要给dp[0]赋0,dp[1]赋dp[0](不选arr[0])和arr[0](选arr[0])中的其大数。 function subsequence(n, array) { // write code here let dp = new Array(n + 1); dp[0] = 0; dp[1] = Math.max(dp[0], array[...