字节跳动高级研发测试算法在线测试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技术 编程开发经验 企业通用技术
查看10道真题和解析