news 2026/6/10 22:59:18

最长优雅子数组

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
最长优雅子数组

2401. 最长优雅子数组 - 力扣(LeetCode)来源于题解,有自己的解读

class Solution { public: int longestNiceSubarray(vector<int>& nums) { //滑动窗口去做 int ans=0,left=0,or_=0;//or_保存最优子序列中所有数据的二进制位为1的最终组合 //right去遍历数组 for(int right=0;right<nums.size();right++) { //&后不为0,去掉左边界(异或:相同抵消) while(or_&nums[right])//用while而不是if:固定当前右边界,从左到右依次去看应该把最优子数组里面的哪些元素去掉 { or_^=nums[left++]; } //&后为0,把nums[right]加入or_中 or_|=nums[right]; ans=max(ans,right-left+1); } return ans; } };

1、考察:滑动窗口 + 位运算

2、这段代码用滑动窗口(双指针)维护一个「始终满足优美条件」的窗口[left, right],并用一个变量or_记录窗口内所有数的「二进制 1 的集合」or_的某一位为 1,说明窗口内有数字的这一位是 1)。

操作含义举例
or_ & nums[right]判断 nums [right] 和窗口内的数是否有重叠的 1:- 结果≠0 → 有重叠(窗口不满足优美条件);- 结果 = 0 → 无重叠(可以加入窗口)假设 or_=011(窗口内有 1、2),nums [right]=4(100):011 & 100 = 0 → 无重叠;若 nums [right]=2(010):011 & 010 = 010≠0 → 有重叠
`or_= nums[right]`把 nums [right] 的 1 加入 or_(标记窗口内新增的 1 的位置)or_=011,nums[right]=4(100):011 | 100 = 111 → or_更新为 111
or_ ^= nums[left]从 or_中移除 nums [left] 的 1(窗口左边界收缩,去掉该数的 1)前提:窗口内每个数的 1 都是唯一的(否则不能用异或),比如 or_=111,nums [left]=2(010):111 ^ 010 = 101 → or_去掉了 010 这一位

完整执行示例(nums = [1,3,8,48,10])

3、核心操作重用:高(&/|/^ 是位运算的基础,面试常考):

  • x & 1:判断奇偶;
  • x ^ x = 0:找唯一数;
  • x | y:合并状态;
  • x & (x-1):消除最后一个 1(比如统计 1 的个数)。

4、总结

(1)代码核心:滑动窗口维护优美子数组,or_记录窗口内 1 的集合,用 & 判断重叠、| 添加、^ 移除;

(2)位运算关键:or_ & nums[right]≠0说明有重叠,需收缩左边界;

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:28:24

Vin象棋黑科技指南:零门槛掌握AI自动走棋系统

Vin象棋黑科技指南&#xff1a;零门槛掌握AI自动走棋系统 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi 基于Yolov5的Vin象棋是一款强大的中国象棋AI辅助…

作者头像 李华
网站建设 2026/6/10 7:35:25

3步解决游戏存档迁移难题:如何实现无忧完整的游戏数据转移

3步解决游戏存档迁移难题&#xff1a;如何实现无忧完整的游戏数据转移 【免费下载链接】EldenRingSaveCopier 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingSaveCopier 换新电脑后游戏进度丢失&#xff1f;系统重装导致数百小时游戏成果付诸东流&#xff1f;…

作者头像 李华
网站建设 2026/6/10 20:09:35

torch+clip都装好了!YOLOE依赖库无需手动安装

torchclip都装好了&#xff01;YOLOE依赖库无需手动安装 你有没有经历过这样的时刻&#xff1a; 刚兴致勃勃想试试最新的开放词汇检测模型&#xff0c;结果卡在环境配置上——torch版本和clip不兼容、mobileclip编译失败、gradio启动报错……折腾两小时&#xff0c;连第一张图…

作者头像 李华
网站建设 2026/6/10 14:35:11

如何解决Daz到Blender的模型丢失问题?3个专业技巧提升工作效率

如何解决Daz到Blender的模型丢失问题&#xff1f;3个专业技巧提升工作效率 【免费下载链接】DazToBlender Daz to Blender Bridge 项目地址: https://gitcode.com/gh_mirrors/da/DazToBlender 1/3 问题导向&#xff1a;你是否曾遇到这些迁移难题&#xff1f; 你是否曾花…

作者头像 李华
网站建设 2026/6/10 14:34:57

旧设备复活与性能优化:释放旧iOS设备潜能的5个秘诀

旧设备复活与性能优化&#xff1a;释放旧iOS设备潜能的5个秘诀 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to downgrade/restore, save SHSH blobs, and jailbreak legacy iOS devices 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit 一、痛点诊…

作者头像 李华