首页 > 代码库 > 得到最长连续递增序列
得到最长连续递增序列
今天作死,看到别人发出来的笔试题就开干了,这tmd还理解错题目了,连续递增序列理解成上一个=下一个-1了。
这是我的成果,撸了4个多小时的:
public class Test12 { public static void main(String[] args){ /** * 需求:找出最长的连续递增序列 * 步骤: * 1、找出所有连续序列可能结果,删除不是连续递增序列的,加入集合 * 2、集合排序,取第一个 * * 方式2: * 0、默认len为数组长度 * 1、找出数组中长度为len的序列,判断是否是连续递增序列,是的话加入集合 * 2、如果前面找出来了,直接返回,否则len = len - 1,继续走1 * 3、取出集合中的第一个返回 */ Integer [] ints = new Integer[]{89,2,73,4,5,6,7,8,10,12,15,4,5,6,8,9,10,2}; System.out.println(Arrays.toString(findMaxCre(ints))); System.out.println(Arrays.toString(findMaxCre1(ints))); } public static boolean isCreSeq(Integer[] numbers){ boolean flag = true; for(int i = 0; i < numbers.length - 1; i ++){ if(numbers[i+1] <= numbers[i]){ flag = false; break; } } return flag; } public static Integer[] findMaxCre1(Integer[] ints){ List<Integer[]> lists = getChildLists1(ints); return lists.get(0); } public static List<Integer[]> getChildLists1(Integer[] ints){ List<Integer[]> lists = new ArrayList<Integer[]>(); if(ints == null || ints.length <= 1){ return lists; } int len = ints.length; for(int i = len; i > 0; i--){ boolean hasValue = http://www.mamicode.com/false; for(int j = 0; j < len; j++){ if(j + i < len){ Integer[] nums = new Integer[i]; nums = Arrays.copyOfRange(ints, j, j + i); if(isCreSeq(nums)){ lists.add(nums); hasValue = true; } } } if(hasValue){ break; } } return lists; } public static Integer[] findMaxCre(Integer[] ints){ List<Integer[]> allQue = new ArrayList<Integer[]>(); allQue.addAll(getChildLists(ints)); Collections.sort(allQue, new Comparator<Integer[]>() { public int compare(Integer[] o1, Integer[] o2) { return o2.length - o1.length; } }); return allQue.get(0); } public static List<Integer[]> getChildLists(Integer[] ints){ List<Integer[]> lists = new ArrayList<Integer[]>(); if(ints == null || ints.length <= 1){ return lists; } int len = ints.length; for(int i = 0; i < len ; i++){ Integer[] row = new Integer[len - i]; row = Arrays.copyOfRange(ints, i, len); int rowLength = row.length; for(int j = 1; j <= rowLength; j++){ Integer[] nums = new Integer[j]; nums = Arrays.copyOfRange(row, 0, j); if(isCreSeq(nums)){ lists.add(nums); } } } return lists; } }
我的思想是怎么转化为代码的呢?
这个我使用了画图的方式,依据你图纸的步骤,你可以更清晰的写出代码,不容易混乱掉!
得到最长连续递增序列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。