Java算法--小红书真题
第一道题
数组里有0和1、一定要翻转一个区间、
“翻转”:0变1,1变0
请问翻转后可以使得1的个数最多是多少?
//子数组最大累加和 public static int process(int[] array) { for(int i = 0; i < array.length; i ++) { array[i] = array[i] == 1 ? -1 : 1; } int pre = array[0]; int result = array[0]; for(int i = 1; i < array.length; i ++) { pre = Math.max(array[i], pre + array[i]); result = Math.max(result, pre); } return result; }
第二道题
一个无序数组长度为n,所有数字都不一样,
并且值都在[0........n-1]范围上
返回让这个无序数组变成有序数组的最小交换次数
public static int process(int[] array) { int result = 0; for(int i = 0; i < array.length; i ++) { while(array[i] != i) { swap(array, array[i], i); result ++; } } return result; } public static vo
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
八股文+场景题+算法真题 文章被收录于专栏
Java全新整理八股文 + 场景题 + 算法 精心设计,面试命中率超过80% 专栏优势: 1、问题和答案已经整理到位,答案更专业,可以直接回答,不需要额外总结! 2、场景题讲解清晰,适用于大部分场景的项目,并且持续更新中 3、分享学习心得【知识点的广度和深度,算法有哪些坑,如何准备面试等等】