一、背景
昨日看到一个算法题:
有一个乱序数组,例如:[ 3,1,4,8,2,10,6 ],您能不能删除最少的数字,让剩下的数字使升序的?请输出删除最少的数字的数量。
样例如下:输入:3 1 4 8 2 10 6
输出:3
我先分析了作为人类的思考过程:一个数字一个数字的看过去,遇到不符合的数字跳过,形成一个个的有序数列,然后比较有序数列的长度,找出最长的有序数列,即可求得最少的数字。
然后整理出算法步骤如下:
二、算法分析
1.遍历数组,找到所有的有序数列,并将有序数列的长度记录;
2.将有序数列的长度记录进行排序(降序);
3.取出最大的长度,用乱序数组的长度减该长度即可。
三、代码实现
package com.rambo.baseTest;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class TestMain {
public