首页 > 编程语言 >【和为 K 的子数组】python刷题记录

【和为 K 的子数组】python刷题记录

时间:2024-07-26 20:54:34浏览次数:17  
标签:cnt nums python self ret int num 数组 刷题

这就到前缀和了。

class Solution:
    def subarraySum(self, nums: List[int], k: int) -> int:
        #连续不能sort
        num=len(nums)
        i=0
        j=i+1
        sm=0
        ret=0
        #j可以=是因为后面切片不包括j
        while j<=num:
            sm=sum(nums[i:j])
            if sm>k:
                if (j+1)<num and nums[j+1]<0:
                    j+=1
                else:
                    i+=1
                    j=i+1
            elif sm<k:
                j+=1
            else:
                if (j+1)<num and nums[j+1]>0:
                    j+=1
                else:
                   ret+=1
                   i+=1
                   j=i+1
        return ret

            

想太复杂了,事实上,这题不能使用滑动窗口来做,因为不满足单调性,就是可能是负数。

两次遍历

class Solution:
    def subarraySum(self, nums: List[int], k: int) -> int:
        num=len(nums)
        s=[0]*(num+1)
        for i,x in enumerate(nums):
            s[i+1]=s[i]+x
        ret=0
        cnt=defaultdict(int)
        for j in s:
            ret+=cnt[j-k]
            cnt[j]+=1
        return ret
       

            

 

一次遍历

class Solution:
    def subarraySum(self, nums: List[int], k: int) -> int:
        #一边计算前缀和,一边遍历前缀和
        ret=s=0
        cnt=defaultdict(int)
        cnt[0]=1
        for x in nums:
            s+=x
            ret+=cnt[s-k]
            cnt[s]+=1
        return ret
       

            

 

ps:

灵神题解

. - 力扣(LeetCode) 

 

标签:cnt,nums,python,self,ret,int,num,数组,刷题
From: https://blog.csdn.net/m0_73629042/article/details/140682164

相关文章

  • 嵌入式Python、ROS、SLAM、WebSocket和Node.js:智能巡逻监控安防机器人设计流程(代码示
    项目概述随着智能技术的发展,智能巡逻机器人在安防、监控和巡逻等领域的应用越来越广泛。本文将介绍一个结合嵌入式系统、机器人技术和后端开发的智能巡逻机器人。该机器人能够自主导航,实时检测异常情况(如火灾或入侵者),并将数据发送到后端服务器,以实现高效的监控和应急响应。主......
  • python和mysql数据库
    pyhton和mysql数据库1.非查询:frompymysqlimportConnection#导入数据库模块pymysql以及Connection对象conn=Connection(#连接数据库  host='127.0.0.1',#ip地址或者是主机名  port=3306,#端口号  user='root',  password='20040130', ) cursor=c......
  • 使用Python进行简单的图像处理
    使用Python进行简单的图像处理概述本文档将介绍如何使用Python进行简单的图像处理。我们将使用Pillow库来处理图像,并演示一些常见的图像操作,例如调整大小、裁剪、旋转和颜色转换。安装Pillow使用pip安装Pillow库:pipinstallpillow导入库在你的Python脚本中导入PIL模块:fr......
  • 【参数化建模】利用Python在Abaqus里面绘制复杂曲线——以“爱心曲线”为例
    【参数化建模】利用Python在Abaqus里面绘制复杂曲线——以“爱心曲线”为例说在前面Python在Abaqus里面可以批量处理很多事情,包括复杂曲线的绘制,这里以心形线为例。心形线函数这里我们选取一款比较经典的心形线:Abaqus代码#--coding:utf-8--importnumpyasnpfr......
  • 【python基础02】 序列,元组,列表,字典,位运算
    python运算符位运算符&:按位与|:按位或^:按位异或~:按位取反<<:左移位>>:右移位x=0b11000110y=0b10100101print(bin(x&y))#0b0010print(bin(x|y))print(bin(x^y))print(bin(~x))#第一位是表示正负print(bin(x>>2))#去除右边两位print(bin(x<<2))#......
  • Linux下学习Python包管理器Poetry教程 零基础入门到精通
    Poetry[官网-Poetry]https://python-poetry.org/安装pipinstallpoetry简单使用初始化poetry项目cd~&&mkdirdemopoetryinit管理虚拟环境poetry预设了很多自己的虚拟环境配置,这些配置可以通过poetryconfig进行修改当用户在执行poetryadd等指令......
  • python 输入输出
    输入输出**注**所有内容均是在pycharm中通过python3.7的解释器进行运行的格式:变量=input('提示词')#输入提示词在控制台显示,要输入的内容在提示词后面输入print(变量)#输出print('输出内容')#在''内部的内容原封不动......
  • 深度学习与图像识别学习笔记day2(numpy数组的方法)
    创建numpy数组importnumpyasnpnparray=np.array([iforiinrange(10)])print(nparray)创建数值都为0的数组importnumpyasnpa=np.zeros(10)print(a)得到的结果0都有一个小数点,调用a.dtype创建的向量类型为dtype(‘float64‘)创建整数型a=np.zeros(10,d......
  • es6中对数组的常用操作方法-普通数组
    参考https://www.jianshu.com/p/856f4200d3c0最近,经常操作数组,可是数组中的一些常用操作方法很迷糊,看了上面一篇文章之后,茅塞顿开。于是自己按照上面文章的用法,自己全部从头到尾写了一遍,分为普通的数组以及对象数组的操作。//定义数组constarr=[1,2,3,4,5]......
  • es6中对数组的常用操作方法-对象数组
    //定义对象数组constarrayObject=[{name:'name1',title:'title1'},{name:'name2',title:'title2'},{name:'name3',title:'title3'}];//数组对象......