求最长的递增子数组

来源:互联网 发布:php ip过滤 编辑:程序博客网 时间:2024/06/05 09:17
package com.chinahrt.zyn.pango;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Set;public class MaxSubList {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint begin = 0;//开始序号int end = 0;//结束序号//放子数组的开始序号和长度Map<Integer,Integer> map = new HashMap<Integer,Integer>(); int[] a = {1,5,3,4,6,10,9,8,7};//迭代循环afor(int i=1;i<a.length;i++){if(a[i]>=a[i-1]){end++;}else{map.put(begin, end-begin+1);begin = i;end = i;}}Set<Entry<Integer,Integer>> set = map.entrySet();Iterator it=set.iterator();int length = 0;//长度int maxBegin = 0;//开始序号//迭代map,寻找最大的长度while(it.hasNext()){Map.Entry<Integer, Integer>  entry=(Entry<Integer, Integer>) it.next();if((Integer.valueOf(entry.getValue()))>length){maxBegin = Integer.valueOf(entry.getKey());length = Integer.valueOf(entry.getValue()); }}System.out.println("最长子数组为:从a["+maxBegin+"]开始的"+length+"个数。");}}

 

原创粉丝点击