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、分享学习心得【知识点的广度和深度,算法有哪些坑,如何准备面试等等】

全部评论

相关推荐

独特的林北在吐槽:第一次基本全a但是直接挂了,第二志愿发了都懒得做了😵
投递小红书等公司10个岗位
点赞 评论 收藏
分享
点赞 7 评论
分享
牛客网
牛客企业服务