当前位置: 首页 > news >正文

Python-算法编程100例-滑动窗口(入门级)

题目1:最大连续1的个数(简单)

给定一个二进制数组 nums , 计算其中最大连续 1 的个数。

解答:前缀和+双指针

# 给定一个二进制数组 nums , 计算其中最大连续 1 的个数。
from typing import Listclass Solution:def findMaxConsecutiveOnes(self, nums: List[int]) -> int:idx_1 = []count_0 = [0] * len(nums)for i in range(len(nums)):if nums[i] == 1:idx_1.append(i)count_0[i] = i - len(idx_1) + 1left = 0right = 0max_len_1 = 0while right < len(idx_1):flaw_0 = count_0[idx_1[right]] - count_0[idx_1[left]]if flaw_0 == 0:max_len_1 = max(max_len_1, right-left+1)right += 1else:left += 1print(max_len_1)

题目2:最大连续1的个数(中等)

给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。

解答:滑动窗口-贪吃蛇-右边无脑滑动、坐边看情况收缩

from typing import List
# 贪吃蛇-右边无脑滑动、坐边看情况收缩
class Solution:def longestOnes(self, nums: List[int], k: int) -> int:s = len(nums)left = 0count = 0max_len = 0for right in range(s):if nums[right] == 0:count += 1while count > k:# 结算max_len = max(max_len, right - left)if nums[left] == 0:count -= 1left += 1max_len = max(max_len, right - left + 1)print(max_len)

题目3:最长空闲内存

某系统中有一空间连续的内存,被划分成多个大小相同的内存块。内存的使用状态记录在字符串memory中,每个内存块状态用x或者.表示,
# 其中x表示内存被使用,.表示内存空闲
现在最多可以释放其中cnt个内存块(即将字符串中的x变成.),以获得一块空间连续的且最长的空闲内存,请计算并返回该最长空闲内存的内存块数量

解答:动窗口-贪吃蛇-右边无脑滑动、坐边看情况收缩

class Solution:def max_free_memory(self, memory, cnt):s = len(memory)left = 0count = 0max_len = 0for right in range(s):if memory[right] == "x":count += 1while count > cnt:# 结算max_len = max(max_len, right - left)if memory[left] == "x":count -= 1left += 1max_len = max(max_len, right - left + 1)print(max_len)

 

 

http://www.lryc.cn/news/386125.html

相关文章:

  • ffmpeg使用mjpeg把yuvj420p编码为jpg图像
  • 龙迅#LT6911GXC支持HDMI2.1转MIPI/4PORT LVDS应用功能,分辨率高达8K30HZ/4K120HZ压缩格式。
  • .NET 6.0 Web API项目中实现基于Token的身份验证
  • Java常用对象的快速初始化
  • 逻辑回归模型模拟实现:从零开始
  • Docker基本使用和认识
  • Halcon 文本文件操作,形态学
  • 【鸿蒙】稍微理解一下Stage模型
  • 毕业答辩制作PPT【攻略】
  • 深入解析npm install --save-dev:开发依赖管理的艺术
  • 福布斯 AI 50 榜单中唯一开源向量数据库:Weaviate
  • 信息学奥赛初赛天天练-38-CSP-J2021阅读程序-约数个数、约数和、埃氏筛法、欧拉筛法筛素数应用
  • 第100+13步 ChatGPT学习:R实现决策树分类
  • Hi3861 OpenHarmony嵌入式应用入门--LiteOS MessageQueue
  • ffmpeg编码图象时报错Invalid buffer size, packet size * < expected frame_size *
  • 解决类重复的问题
  • 使用 shell 脚本 统计app冷启动耗时
  • 使用容器部署redis_设置配置文件映射到本地_设置存储数据映射到本地_并开发java应用_连接redis---分布式云原生部署架构搭建011
  • 第五节:如何使用其他注解方式从IOC中获取bean(自学Spring boot 3.x的第一天)
  • Paragon NTFS与Tuxera NTFS有何区别 Mac NTFS 磁盘读写工具选哪个好
  • EtherCAT主站IGH-- 2 -- IGH之coe_emerg_ring.h/c文件解析
  • psensor 的手势功能
  • 使用 nvm 管理 Node 版本及 pnpm 安装
  • uni-appx使用form表单页面初始化报错
  • TiDB-从0到1-数据导出导入
  • 动手学深度学习(Pytorch版)代码实践 -卷积神经网络-16自定义层
  • 树莓派4设置
  • 44.商城系统(二十五):k8s基本操作,ingress域名访问,kubeSphere可视化安装
  • MySQL高级查询
  • 聊聊啥项目适合做自动化测试