字节跳动高级研发测试算法在线测试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;
	}
}


#牛客AI配图神器#

#面试官是我前女友##当你面对裁员会如何?##牛客创作赏金赛##说说你知道的学历厂##实习生的蛐蛐区#
Java技术 文章被收录于专栏

JavaEE技术 编程开发经验 企业通用技术

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务