题目描述:
给定一个整数数组,找到其中最长的递增子数组(注意不是子序列,即结果是连续的)。如果有多个一样长的子数组,那么都需要查找出来。语言不限。
输入描述:
输入为标准输入流。输入数组元素以空格分隔。
输出描述:
输出为标准输出流。输出数组元素以空格分隔,输出最后不带额外空格,多个输出以换行分隔。
示例1
输入
1 7 2 4 5 3
输出
2 4 5
解法:
使用Map来存储相关的值,保证了多个。
package test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class Datatest {
public static void main(String args[])
{ int [] nums= {1,2,3,1,2,3,4,2,3,5,6};
Max_ASC(nums);
}
public static void Max_ASC(int[] nums)
{
int index=0,maxRes=0,numsSize=nums.length;
ArrayList<Integer> arrayList=new ArrayList<>();
Map<Integer, ArrayList<Integer>>aMap = new HashMap<Integer, ArrayList<Integer>>();
while(index<numsSize)
{
int teIndex=index+1;
while(teIndex<numsSize &&nums[teIndex]>nums[teIndex-1])
{
teIndex++;
}
if(teIndex-index>=maxRes)
{ if(teIndex-index!=maxRes)
aMap.clear();
arrayList=new ArrayList<>();
for(int i=index;i<teIndex;i++)
arrayList.add(nums[i]);
maxRes=teIndex-index;
for(int i=0;i<arrayList.size();i++)
System.out.println(arrayList.get(i));
aMap.put((Integer)index,arrayList);
}
index=teIndex;
}
//输出相关的数据
System.out.println(aMap.size());
for(ArrayList<Integer> value : aMap.values()){
System.out.println(value);
}
}
}
希望会有二面,跪求!!!