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

Leetcode3097:或值至少为 K 的最短子数组 II

题目描述:

给你一个 非负 整数数组 nums 和一个整数 k 。

如果一个数组中所有元素的按位或运算 OR 的值 至少 为 k ,那么我们称这个数组是 特别的 。

请你返回 nums 中 最短特别非空 子数组的长度,如果特别子数组不存在,那么返回 -1 。

代码思路:

  1. 初始化变量
    • length:数组 nums 的长度。
    • MIN:用于记录最短子数组的长度,初始值设为 length + 1(一个不可能达到的长度,用于后续判断是否存在符合条件的子数组)。
    • lr:分别表示当前考虑的子数组的左右边界(左闭右闭)。
    • ans:用于存储当前右边界 r 及其左侧所有元素的按位或结果。
  2. 遍历数组
    • 使用 while 循环遍历数组,r 表示当前考察的右边界。
    • 在每次循环中,更新 ans 为从 l 到 r 的所有元素的按位或结果。
    • 如果 ans >= k,则尝试从右向左找到一个最短的子数组,使得其按位或结果不小于 k
  3. 内部循环
    • 从 r 到 l-1 向左遍历,尝试找到一个最短的满足条件的子数组。
    • 使用 temp 和 pre 变量来记录当前和上一个位置的按位或结果。
    • 如果找到一个满足条件的子数组,更新 MINl 和 ans
  4. 结果判断
    • 如果 MIN 仍然是 length + 1,说明没有找到符合条件的子数组,返回 -1
    • 否则,返回 MIN

代码实现:

class Solution:def minimumSubarrayLength(self, nums: List[int], k: int) -> int:length = len(nums)MIN = length + 1l = r = ans = 0while(r < length):ans = ans | nums[r]if ans >= k:temp = pre = 0for i in range(r, l-1, -1):pre = temptemp = temp | nums[i]if temp >= k:MIN = min(MIN, r-i+1)l = i + 1ans = prebreakr += 1if MIN == length + 1:return -1return MIN

 

 

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

相关文章:

  • HTML应用指南:利用GET请求获取全国特斯拉充电桩位置
  • 阿里云通义实验室自然语言处理方向负责人黄非:通义灵码2.0,迈入 Agentic AI
  • 第8篇:从入门到精通:掌握Python异常处理
  • 设计模式-结构型-装饰器模式
  • git详细使用教程
  • java实现word转html(支持docx及doc文件)
  • 搜维尔科技:Xsens人形机器人解决方案的优势
  • 【王树森搜索引擎技术】概要01:搜索引擎的基本概念
  • 《Java核心技术II》可中断套接字
  • 基于 Python 的深度学习的车俩特征分析系统,附源码
  • C#读写ini配置文件保存设置参数
  • SwanLab环境变量列表
  • 深度学习入门-CNN
  • 微服务网关,如何选择?
  • SpringBoot集成Mqtt服务实现消费发布和接收消费
  • 在Mac mini上实现本地话部署AI和知识库
  • 一个方法被多个线程同时调用,确保同样参数的调用只能有一个线程执行,不同参数的调用则可以多个线程同时执行
  • 3. MySQL事务并发的问题与解决方法
  • 25/1/15 嵌入式笔记 初学STM32F108
  • MySQL的不同SQL模式导致行为不同?
  • Flink 使用 Kafka 作为数据源时遇到了偏移量提交失败的问题
  • 【日志篇】(7.6) ❀ 01. 在macOS下刷新FortiAnalyzer固件 ❀ FortiAnalyzer 日志分析
  • LSA更新、撤销
  • DevUI 2024 年度运营报告:开源生态的成长足迹与未来蓝图
  • centos 7 Mysql服务
  • React 表单处理与网络请求封装详解[特殊字符][特殊字符]
  • C++ 的 CTAD 与推断指示(Deduction Guides)
  • 【Rust自学】13.2. 闭包 Pt.2:闭包的类型推断和标注
  • 如何将原来使用cmakelist编译的qt工程转换为可使用Visual Studio编译的项目
  • 微软确认Win10停更不碍Microsoft 365使用!未来是否更新成谜