​力扣解法汇总915. 分割数组

news/2024/7/2 23:46:56

 目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给定一个数组 nums ,将其划分为两个连续子数组 left 和 right, 使得:

  • left 中的每个元素都小于或等于 right 中的每个元素。
  • left 和 right 都是非空的。
  • left 的长度要尽可能小。

在完成这样的分组后返回 left 的 长度 

用例可以保证存在这样的划分方法。

示例 1:

输入:nums = [5,0,3,8,6]
输出:3
解释:left = [5,0,3],right = [8,6]

示例 2:

输入:nums = [1,1,1,0,6,12]
输出:4
解释:left = [1,1,1,0],right = [6,12]

提示:

  • 2 <= nums.length <= 105
  • 0 <= nums[i] <= 106
  • 可以保证至少有一种方法能够按题目所描述的那样对 nums 进行划分。

解题思路:

* 解题思路:
* 用三个变量来记录,分别记录左侧最大值,右侧的最大值,左右侧分割的氛围。
* 一次遍历nums数组,如果value < nums[leftMaxIndex],则说明右侧有数字小于左侧,则我们把分割线置为空-1,此时右侧的最大值就是下一次左侧最大值。
* 如果value >= nums[leftMaxIndex],如果分割线为空,则设置为新的分割线。
* 并且此时如果value > nums[rightMaxIndex],则更新右侧最大值

代码:

public class Solution915 {

    public int partitionDisjoint(int[] nums) {
        int leftMaxIndex = 0;
        int dividerIndex = -1;
        int rightMaxIndex = 0;
        for (int i = 1; i < nums.length; i++) {
            int value = nums[i];
            if (value < nums[leftMaxIndex]) {
                leftMaxIndex = rightMaxIndex;
                dividerIndex = -1;
                continue;
            }
            if (dividerIndex == -1) {
                dividerIndex = i;
            }
            if (value > nums[rightMaxIndex]) {
                rightMaxIndex = i;
                continue;
            }
        }
        return dividerIndex;
    }
}


http://lihuaxi.xjx100.cn/news/104575.html

相关文章

苹果,正在“塌方”的西方贵族?

坊间有传言&#xff0c;2022会是苹果由盛转衰的“关键年”&#xff0c;这是真的吗&#xff1f; 关于唱衰苹果的声音&#xff0c;其实每年的9、10月份都会有很多。至于原因&#xff0c;当然是此时正是苹果新产品发布季&#xff0c;其产品愈发缺乏新意&#xff0c;定价却不断走高…

幽默型性格分析,幽默型人格的职业发展方向

幽默型性格的特征 幽默型性格&#xff0c;指的是在日常相处当中&#xff0c;能给人表现出非常欢乐的一面。善于懂得用轻松欢快的气氛、缓解矛盾&#xff0c;也知道如何用一种更加合适的口吻&#xff0c;让整个团队变得更加团结。 幽默型性格的人并不是低俗的恶搞的&#xff0…

谷歌翻译用不了,失效的最新解决方法之一

9 月底谷歌关闭国内版翻译后&#xff0c;简单配置host文件仍然可使用。但是&#xff0c;目前谷歌陆续关闭国内服务器上的谷歌翻译接口服务后&#xff0c;10月20日该解决方法已失效&#xff0c;于是第一时间写个简单教程分享出来~ 目前想到了两个方法&#xff0c;均测试有效&am…

【大数据】TiDB数据库 2022.07.11 周一

文章目录一、是什么1.1) 概念1.2&#xff09;主要特性1.2.1&#xff09;MySQL兼容性1.3) TiCDC1.3.1) TiCDC的管理工具1.3.2&#xff09; 创建 TiCDC任务1.3.3&#xff09; 查询 TiCDC 任务1.3.4&#xff09; 管理 TiCDC 同步任务1.3.5&#xff09; TiCDC的限制1.3.6&#xff0…

DASCTF X GFCTF 2022十月 Misc

文章目录Misc滴滴图poi&#xff1f;qoi&#xff01;ez_xxdeasy_dotsansicdockermiscMisc 滴滴图 jpg(png)后面有压缩包&#xff0c;压缩包的文件尾有段密码 是解压此压缩包的&#xff0c;而压缩包一共有两个&#xff0c;都解压看过了内容相同 \u0074\u0068\u0069\u0073\u005…

JDK8: Collection

序言 整理下JDK的集合的设计思路,以便我们在开发过程中创建自己的数据结构cuiyaonan2000163.com ArrayList 以ArrayList增加一个元素为入口. /*** Appends the specified element to the end of this list.** param e element to be appended to this list* return <tt>…

jQuery的下载与安装

引言 在学习后端Java的同时也少不了前端的知识&#xff0c;而jQuery则是现在前端人员普遍都在使用的一个框架&#xff0c;其可以更好的帮助我们使用前端语言&#xff0c;那么今天我们就先来简单地讨论一下如何对其进行安装和下载吧。 下载与安装 ​我们要想使用 jQuery&#x…

JSP的简化:一文吃透EL表达式

本文被 系统学习JavaWeb 收录点击订阅专栏 文章目录1 走进EL表达式2 关于EL表达式与Bean对象2.1 什么是Java Bean&#xff1f;2.2 使用EL表达式输出复杂Bean对象3 EL表达式的运算3.1 关系运算3.2 逻辑运算3.3 算术运算3.4 empty运算3.5 三元运算3.6 点运算和中括号运算4 EL表达…