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

Leetcode 3097. Shortest Subarray With OR at Least K II

  • Leetcode 3097. Shortest Subarray With OR at Least K II
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3097. Shortest Subarray With OR at Least K II

1. 解题思路

这一题是题目3095的一个进阶版本,但也就是增加了序列的复杂度而已,要求我们能够在 O ( N ) O(N) O(N)的算法复杂度内完成而已。

一个直接的思路就是滑动窗口,我们只需要不断地维护一个滑动窗口即可,逐步移动左边界 i i i,然后维护右边界 j j j使得滑动窗口内的或值始终大于等于 k k k即可。

唯一需要注意的是,由于或操作有叠加效果,因此我们需要记录每一个位上出现的 1 1 1的总的次数,确保删除一个数之后依然可以准确获得后续所有值的或操作结果。

2. 代码实现

给出python代码实现如下:

class Solution:def minimumSubarrayLength(self, nums: List[int], k: int) -> int:def num2digit(num):ret = [0 for _ in range(32)]idx = 31while num > 0:ret[idx] = num % 2num = num // 2idx -= 1return retdef is_greater(digit1, digit2):for i in range(32):if digit1[i] > 0 and digit2[i] == 0:return Trueelif digit1[i] == 0 and digit2[i] > 0:return Falsereturn Truei, j, n = 0, 0, len(nums)ans = n+1dk = num2digit(k)digit = [0 for _ in range(32)]while i < n:while j < n and (j ==i or not is_greater(digit, dk)):dj = num2digit(nums[j])digit = [x+y for x, y in zip(digit, dj)]j += 1if is_greater(digit, dk):ans = min(ans, j-i)else:breakdi = num2digit(nums[i])digit = [x-y for x, y in zip(digit, di)]i += 1return ans if ans != n+1 else -1     

提交代码评测得到:耗时3221ms,占用内存38MB。

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

相关文章:

  • 算法系列--递归,回溯,剪枝的综合应用(2)
  • Docker搭建LNMP环境实战(09):安装mariadb
  • 基于Python的微博舆论分析,微博评论情感分析可视化系统,附源码
  • Flutter iOS上架指南
  • 实操:driver.js 实现产品导览、亮点、上下文帮助
  • 【JavaWeb】Day29.SpringBootWeb请求响应——请求(二)
  • asf是什么格式的文件?用手机怎么打开?
  • picGo图床搭建gitee和smms(建议使用)
  • LeetCode | 数组 | 二分查找 | 35.搜索插入位置【C++】
  • Linux 给网卡配置ip
  • 【C语言】翻译环境与运行环境
  • ubuntu20.04执行sudo apt-get update失败的解决方法
  • 接口调用成功后端却一直返回404
  • 【Vmware】 debian 12 安装教程
  • YooAssets 使用相关
  • 精准扶贫管理系统|基于Springboot的精准扶贫管理系统设计与实现(源码+数据库+文档)
  • Flutter与iOS和Android原生页面交互
  • Chrome安装Vue插件vue-devtools
  • 内存和网卡压力测试
  • 法律行业案例法模型出现,OPenAI公布与法律AI公司Harvey合作案例
  • 详解Qt网络编程
  • docker版Elasticsearch安装,ik分词器安装,用户名密码配置,kibana安装
  • Python中的Requests库:HTTP请求的简单之道
  • [RK3566-Android11] 关于 a2dpsink -蓝牙支持接收播放/无PIN码连接
  • 玩机进阶教程-----高通9008线刷XML脚本修改备份 檫除的操作步骤解析
  • 前端路径问题总结
  • YOLOv8改进 | 低照度检测 | 2024最新改进CPA-Enhancer链式思考网络(适用低照度、图像去雾、雨天、雪天)
  • python的pip如何升级
  • Collection与数据结构 Stack与Queue(一): 栈与Stack
  • 内部类(来自类和对象的补充)