当前位置:网站首页>双指针/滑动窗口问题
双指针/滑动窗口问题
2022-08-03 16:39:00 【Briwisdom】
难度困难12
一个数字的 分数 定义为数组织和 乘以 数组的长度。
- 比方说,
[1, 2, 3, 4, 5]的分数为(1 + 2 + 3 + 4 + 5) * 5 = 75。
给你一个正整数数组 nums 和一个整数 k ,请你返回 nums 中分数 严格小于 k 的 非空整数子数组数目。
子数组 是数组中的一个连续元素序列。
timeout代码:
从nums的第1个元素开始,遍历到最后一个元素,用变量L表示。
进入while循环,从L开始,逐渐递增1个数量,计算该区间nums的和,如果满足条件,ans+1,否则退出while,L=L+1继续循环
class Solution:
def countSubarrays(self, nums: List[int], k: int) -> int:
n=len(nums)
if n==1:
return 1 if nums[0]<k else 0
ans=0
L=0
while(L<n):
i=1
while(L+i<=n and sum(nums[L:L+i])*i<k):
ans+=1
i+=1
L+=1
return ans双指针/滑动窗口优化代码:
子序列以右边结束位置为标志,从0遍历nums数组。如果满足条件ans加上左右的间隔数,否则,将left标志向右移动,用来减少求和。
right是子序列结束的位置,left是子序列开始的位置,中间的间隔是该条件下可以组成的子序列数目。

class Solution:
def countSubarrays(self, nums: List[int], k: int) -> int:
ans=he=left=0
for right, num in enumerate(nums):
he+=num
while(he*(right-left+1)>=k):
he-=nums[left]
left+=1
ans+=right-left+1
return ans边栏推荐
- 请问下这个hologres维表是被缓存了么?怎么直接Finished了
- leetcode:187. 重复的DNA序列
- 中小微企业如何简单便捷、低成本实现数字化?360视觉云有妙招
- [Unity Getting Started Plan] Basic Concepts (7) - Input Manager & Input Class
- Kubernetes 笔记 / 入门 / 生产环境 / 容器运行时
- 新版本 MaxCompute 的SQL 中支持的 EXTRACT 函数有什么作用?
- ArkUI如何适配横竖屏
- “68道 Redis+168道 MySQL”精品面试题(带解析),你背废了吗?
- vector类
- CPU个数_核心数_线程数之间的关系
猜你喜欢
随机推荐
【There is no tracking information for the current branch. Please specify which branch you want to 】
CPU个数_核心数_线程数之间的关系
deepstresam的插件配置说明,通过配置osd,设置字体的背景为透明
使用 PowerShell 将 Windows 转发事件导入 SQL Server
To add digital wings to education, NetEase Yunxin released the overall solution of "Internet + Education"
leetcode:189. 轮转数组
C语言04、操作符
最强分布式锁工具:Redisson
Kubernetes 笔记 / 入门 / 生产环境 / 用部署工具安装 Kubernetes / 用 kubeadm 启动集群 / 安装 kubeadm
MySQL窗口函数 OVER()函数介绍
软考 --- 软件工程(1)概念、开发模型
C# 获取文件名和扩展名(后缀名)
EA 改口,称单人游戏是产品组合中“非常重要的一部分”
正向代理与反向代理
C专家编程 第3章 分析C语言的声明 3.7 typedef struct foo{... foo;}的含义
C语言03、数组
浅谈Service&nbsp;Mesh对业务系统的价值
C专家编程 第3章 分析C语言的声明 3.5 typedef可以成为你的朋友
node连接mongoose数据库流程
5. Longest Palindromic Substring









