首页 > 其他分享 >915. 分割数组

915. 分割数组

时间:2022-10-24 20:46:57浏览次数:66  
标签:分割 遍历 nums maxv 最小值 数组 915 minv

题目描述

给一个数组nums,需要把他换分为两个连续的子数组,要求是两个子数组非空,且左边的每个元素都小于等于右边每个元素,左边数组长度尽可能小
求left的长度

f1-模拟+2次遍历

基本分析

  1. 题目直白的翻译是啥?能不能找到一个靠左的点,让左子数组的最大值<=右子数组的最小值?
  2. 怎么知道靠右边区间的最小值的情况?直接1次遍历,记录在数组minv中,其中minv[i]表示从i到n-1的子数组最小值
  3. 怎么拿到结果?从左到右再次遍历,用一个值维护遇到的最大值maxv,如果遍历到i出的最大值是maxv,有maxv<=minv[i+1],就找到个这个长度i+1

代码

class Solution:
    def partitionDisjoint(self, nums: List[int]) -> int:
        n = len(nums)
        minv = [0] * (n+10)
        minv[n-1] = nums[n-1]
        for i in range(n-2, -1, -1):
            minv[i] = min(minv[i+1], nums[i])
        maxv = 0
        for i in range(n):
            maxv = max(maxv, nums[i])
            if maxv <= minv[i+1]:
                return i+1

        return -1 

复杂度

时间:\(O(n)\)
空间:\(O(n)\)

总结

  1. 能看到是求两个区间的最值,区间是可变化的
  2. 维护从右到左的最小值用遍历实现,先赋n-1处的初值,再两两对比就行
  3. 再次从左到右遍历时候,不再需要数组,用一个值maxv实现就行。

标签:分割,遍历,nums,maxv,最小值,数组,915,minv
From: https://www.cnblogs.com/zk-icewall/p/16822706.html

相关文章

  • Leetcode第915题:分割数组(Partrition Array Into Disjoint Intervals)
    解题思路最终的是将一个数组分为两个数组:左数组和右数组。这两个数组满足:左数组的最大值小于右数组的任何值。需要一个变量left_max来记录左数组的最大值。左数组长度......
  • 915. 分割数组
    915.分割数组给定一个数组 nums ,将其划分为两个连续子数left 和 right, 使得:left 中的每个元素都小于或等于 right 中的每个元素。left和 right 都是非空......
  • 【算法】喜欢算法的朋友,看下乘积最大数组如何写?
    算法题目描述1.数组排序,类型:图算法,简单。2.下一个排列,类型:数组,双指针,中等难度。3.乘积最大数组,类型,数组,中等难度。第一道数组排序算法题目详细描述编写一个JavaAppl......
  • shell脚本之数组
    一、数组的概念数组中可以存放多个值。BashShell只支持一维数组(不支持多维数组)。与大部分编程语言类似,数组元素的下标由0开始。Shell数组用括号来表示,元素用"空格......
  • 多重循环~平面分割
    题目描述:输入第一行输入一个整数m(m<=100),表示有m组测试数据。接下来的m行,每行有两个整数n和p,分别表示平面内的直线数和相交于一点直线数。 输出每组测试数据输出......
  • 数组之reduce方法详解
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>数组之reduce方法</title></head><body><script>//reduce()方法不会改变原始数组......
  • c语言数组(c语言数组求平均值)
    C语言数组有哪些特点呢?一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型C语言中一维数组中的数组大小可以省略吗?C语言中一维数组中的数组大小是......
  • #yyds干货盘点# 动态规划专题:乘积为正数的最长连续子数组
    1.简述:描述给定一个长度为n的整数数组,请你找出其中最长的乘积为正数的子数组长度。子数组的定义是原数组中一定长度的连续数字组成的数组。数据范围:  ,数组中的元素满......
  • #yyds干货盘点# 动态规划专题:环形数组的连续子数组最大和
    1.简述:描述给定一个长度为  的环形整数数组,请你求出该数组的 非空 连续子数组 的最大可能和。环形数组 意味着数组的末端将会与开头相连呈环状。例如,对于数组 而言,......
  • 数据结构 数组动态数组
    数据结构:批量管理和维护数据。一维数组string[]Name=newstring[3];string数组存储的数据类型,Name数组名称new通过new操作符返回新数组对象string[3]定义数组的元......