leetcode–差分数组

leetcode–差分数组0.差分数组的概念:常用于某个区间值都需加/减去a的问题。1.1094拼车classSolution:defcarPooling(self,trips:List[List[int]],capacity:int)->bool:max_val=0foriinrange(len(trips)):max_val=max(max_val,trips[i][2])diff=[0

大家好,又见面了,我是你们的朋友全栈君。

0. 差分数组的概念:

常用于某个区间值都需加/减去a的问题。

1. 1094拼车

在这里插入图片描述

class Solution:
    def carPooling(self, trips: List[List[int]], capacity: int) -> bool:
        max_val = 0
        for i in range(len(trips)):
            max_val = max(max_val, trips[i][2])
        diff = [0]*(max_val+2)
        for i in range(len(trips)):
            diff[trips[i][1]] += trips[i][0]
            diff[trips[i][2]] -= trips[i][0]
        sum_val = 0   
        flag = True 
        for i in range(len(diff)):
            sum_val +=diff[i]
            if sum_val > capacity:
                flag = False
                break 
        return flag

2. 1109航班预定统计

在这里插入图片描述

class Solution:
    def corpFlightBookings(self, bookings: List[List[int]], n: int) -> List[int]:
        diff = [0]*(n+2)
        res = [0]*n
        sum_val = 0 
        for i in range(len(bookings)):
            diff[bookings[i][0]] += bookings[i][2]
            diff[bookings[i][1]+1] -= bookings[i][2]
        for i in range(1,n+1):
            sum_val+= diff[i]
            res[i-1] = sum_val
        return res

1674. 使数组互补的最少操作数

在这里插入图片描述

class Solution:
    def minMoves(self, nums: List[int], limit: int) -> int:
        diff = [0 for i in range(2*limit +2)]
        n = len(nums)
        for i in range(n//2):
            A = nums[i]
            B = nums[n-1-i]
            l = 2
            r = 2*limit
            diff [l] +=2
            diff[r+1] -=2
            l = 1 + min(A,B)
            r = limit + max(A,B)
            diff [l] -=1
            diff [r+1] +=1
            diff [A+B] -=1
            diff[A+B+1] +=1
        print(diff)    
        res = n    
        sum_val = 0
        for j in range(2,2+limit+1):
            sum_val += diff[j]
            res = min(res, sum_val)
        return res  

121. 买卖股票I

122. 买卖股票II

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133434.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab画圆函数

    matlab画圆函数function[]=circle(x,y,r)%画圆函数%circle(0,0,4);gridon%xy是中心,r是半径rectangle(‘Position’,[x-r,y-r,2*r,2*r],’Curvature’,[1,1])axisequal%为了修饰曲线的颜色,宽度,圈盘填充颜色等,可以设置其他参数等,例如%’edgecolor’,’b’,其中edgecolor表示边框颜色,后面的b是颜色参数值;%facecolor’,’r’,其中facecolor表示内部填

    2022年6月19日
    87
  • pytest fixtures_pytest allure

    pytest fixtures_pytest allurefixture的优势Pytest的fixture相对于传统的xUnit的setup/teardown函数做了显著的改进:命名方式灵活,不局限于setup和teardown这几个命名conf

    2022年7月30日
    2
  • Hazelcast_胡沈员介绍

    Hazelcast_胡沈员介绍Hazelcast介绍什么时侯需要用例内存中分布式计算场景分布式消息特性全景DistributedMaps一个结点中分区Hazelcast中的分片也称为分区,Hazelcast默认271个分区。H

    2022年8月1日
    5
  • linux修改密码过期时间echo_linux查看密码修改时间

    linux修改密码过期时间echo_linux查看密码修改时间linux新建用户默认90天密码过期,设置永不过期方法。1、查看某个用户的密码过期时间等信息,可以用:chage-l用户名2、修改单个用户的密码过期时间,可以用chage-Mdaysusername来设置。如:chage-M99999lizi就是把lizi这个用户的最大期限设置为无限,lizi这个用户的密码就永远不会过期了。转载:linux环境下设置用户密码过期期限_amazingsmile的专栏-CSDN博客_linux设置密码不过期…

    2022年9月6日
    7
  • 通过label点击触发隐藏input:file上传文件或者图片[通俗易懂]

    通过label点击触发隐藏input:file上传文件或者图片

    2022年2月11日
    45
  • VMwware15激活码【中文破解版】2022.02.10

    (VMwware15激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~4KDD…

    2022年4月1日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号