字节跳动高级研发测试算法在线测试Java 获取源整形数组的子数组的和最大值
package com.javaTest; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Random; import java.util.Set; public class HighEnterpriseJavaAlgrorithm { public static void main(String[] args) { System.out.println("Hello World!"); } /** * 获取源整形数组的子数组的和最大值 * int arr {1,3,-1,4,6} * int subIntArr {1,3}, {1,-1,6} * @param intArr * @return */ public static Integer getMaxTotalSumFroSubIntArr(int[] intArr) { if(intArr==null) { return null; } if(intArr.length==0) { return null; } StringBuilder strBuilder=new StringBuilder(); for (int i = 0; i < intArr.length; i++) { int intTemp = intArr[i]; strBuilder.append(intTemp); } Random random=new Random(); String string = strBuilder.toString(); StringBuilder strBuilder1=new StringBuilder(); Set<String> strHashSet=new HashSet<String>(); int count=0; while(true) { int nextIntIndexBegin = random.nextInt(intArr.length); int nextIntIndexNextEle=random.nextInt(intArr.length); if(nextIntIndexBegin==nextIntIndexNextEle) { String substring = string.substring(nextIntIndexNextEle); strBuilder1.append(substring); } String strBuilder12Str=strBuilder1.toString(); strHashSet.add(strBuilder12Str); StringBuilder delete2NewStrBuilder = strBuilder1.delete(nextIntIndexBegin, nextIntIndexNextEle); if(nextIntIndexBegin<nextIntIndexNextEle) { String substring = string.substring(nextIntIndexBegin, nextIntIndexNextEle); delete2NewStrBuilder.append(substring); }else { String substring = string.substring(nextIntIndexNextEle, nextIntIndexBegin); delete2NewStrBuilder.append(substring); } String string2 = delete2NewStrBuilder.toString(); strHashSet.add(string2); if(count>1000000) { break; } count++; } List<Integer> intList=new ArrayList<Integer>(); List<ArrayList<Integer>> twoLayerIntList=new ArrayList<ArrayList<Integer>>(); strHashSet.forEach(e->{ for (int i = 0; i < e.length(); i++) { int intCharTemp = e.charAt(i); intList.add(Integer.valueOf(intCharTemp)); } twoLayerIntList.add((ArrayList<Integer>) intList); }); List<Integer> sumIntList=new ArrayList<>(); for(List<Integer> listIntArr : twoLayerIntList) { int sumInt=0; for(Integer intTemp : listIntArr) { sumInt+=intTemp; } sumIntList.add(sumInt); } Collections.sort(sumIntList,new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { // TODO Auto-generated method stub if(o1>o2) { return 1; }else if(o1<o2){ return -1; } return 0; } }); Integer integerMax = sumIntList.get(sumIntList.size()-1); return integerMax; } }#面试官是我前女友##当你面对裁员会如何?##牛客创作赏金赛##说说你知道的学历厂##实习生的蛐蛐区#
Java技术 文章被收录于专栏
JavaEE技术 编程开发经验 企业通用技术