字节跳动高级研发测试算法在线测试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技术 编程开发经验 企业通用技术

全部评论

相关推荐

潜水了很久,最近刚好也刷到现代汽车前瞻技术研发中心的急速编程赛,作为2024届加入公司的一员,想跟各位学弟学妹们说,这场竞赛真的值得报名。先说说最实在的:今年竞赛的福利是真的丰厚,除了有实习直通卡之外,还有万元奖金。不过作为在职员工,但更想说的是,现代汽车前瞻技术研发中心本身就是个能让人边成长边收获的地方。先说一下我的个人经历吧,作为一名外语学习者,几乎一直以来都是“杂家”,没有固定的专业知识领域,因此,求职时在行业选择上也稍微有点苦恼,另外,外语类岗位大部分是销售,采购,运营,翻译(笔译为主),其实也不太确定自己究竟适合什么岗位。焦虑点就是如上所述,解决办法,大概就是一直行动着,认真投每一份简历,认真对待每一次面试,线上搜索准备,线下面试的时候也可以加深了解,解决一些未知和疑惑,最终从各方面的考虑,选择了加入我司。从实习到成为正式员工的这段时间,感触特别深。刚进来时,领导和同事完全没把我当新人放养,带着我循序渐进熟悉工作,先让我跟着听每周的项目会议打基础,再慢慢尝试负责小部门的口译,笔译任务也是从短到长、从易到难,前辈还会逐字检查指导。这种慢慢来但稳扎稳打的培养,让我这种刚走出校园的人特别有安全感,所以我一直觉得给足应届生培养和支持的公司真的非常神仙。牛客也有很多同学会关注公司氛围方面,我觉得从一个在职一年的员工来看,可能大家参考度更高。说一下我们公司的办公氛围吧,首先是大家都是以工作为重心,不会将私事或者个人情绪带到工作中,当然可能其他公司也这样,但更值得提的是,很多我身边的朋友都觉得我进了一家神仙公司,因为有Refresh假期、节假日福利、高温福利等等等,还有弹性上班,不加班这些,所以看到竞赛有实习机会这么好的事情,我非常推荐大家冲一冲,来我们公司感受和体验一番。虽然不是技术同学,但一直有在牛客潜水,刷到很多技术大佬给我不少各种行业各种岗位的信息输入。我觉得入股我司不亏,尤其今年的竞赛更是了解这里的好机会,你能提前感受这里的成长土壤:有实用的培训、有愿意带你的前辈、有接触前沿技术的项目,还有尊重年轻人想法的氛围。福利只是加分项,真正珍贵的是能在这里“做喜欢的事,还能越做越好”。学弟学妹们,别错过啦!冲这场竞赛,说不定就能解锁一段超有收获的成长之旅哦!
站队站对牛:勇敢牛牛 在线拿钱
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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