【题目】:给定一个整数序列,问你最少删去多少个数字后使得整个数序列严格单调(可以是单调增也可以是单调减) 【思想】:可以先去求最长连续递增或者递减子序列的长度,假设为l,然后len - l即为结果 时间复杂度O(N) 空间复杂度O(N) import java.util.Scanner; public class Main2 { public static int helper(int[]nums){ int len = nums.length; int[]dp = new int[len];//dp[i]表示从0位置开始遍历到第i位置上时的递增连续子序列的最大长度 int[]dp2 = new int[len];//dp[i]表示从0位置开始遍历到第i位置上时的递减连续子序列的最大长度 dp[0] = 1; dp2[0] = 1; int res1 = 0,res2 = 0; for(int i=1;i<len;i++){ if(nums[i]>nums[i-1]){ dp[i] = dp[i-1]+1; }else{ dp[i] = dp[i-1]; } res1 = Math.max(res1,dp[i]); } for(int i=1;i<len;i++){ if(nums[i]<nums[i-1]){ dp2[i] = dp2[i-1]+1; }else{ dp2[i] = dp2[i-1];