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

C++ 子数组位运算结果 题型

或运算898. 子数组按位或操作 - 力扣LeetCode我们直接看题意思很明显就是找出所有子数组然后将子数组各个数相或得到的结果有多少个不同。这里我们首先想到的就是直接把所有子数组求出来在或起来但显然有很多的重复计算。我们在算[1,2] 和[1,2,3]时完全可以直接用[1,2]的结果继续算。因此有了优化思路。这里我直接告诉优化的思路参考了LogTrick 入门教程 - 知乎。可以将子数组分成以i下标开始的子数组。例如在数组[4,3,2,1,0]中我们可以将结果分成以4,3,2,1,0下标为开始的子数组。那么我们如何完整求出所有以i下标开始的子数组呢那也很好求了我们只要让以i开始的后面数挨个或在i下标的数组上每次计算后就统计这样就能将所有情况统计到了。这里我们直接给代码方便大家理解我说的逻辑int subarrayBitwiseORs(vectorint arr) { unordered_setintst;//去重 int lenarr.size(); for(int l 0; l len ; l){ st.insert(arr[l]);//只有一个数也要统计 for(int r l-1;r0; --r){ arr[r] arr[r]|arr[l];//看不懂的可以看下面的注释 st.insert(arr[r]); } } return st.size(); } // 3 2 1 0 // 3 //下标在0 // 3|2 2 //下标在1 // 3|2|1 2|1 1 //2 // 3|2|1|0 2|1|0 1|0 0 //3这样就能统计全部的结果了。但是也有问题时间复杂度是O(n²)我们再看题目要求它要统计的是所有不同的数。我们看注释表。例如看2|12|1 2意思就是这次的1不起作用那么我们对前面的3|2|1是否起作用呢答案是也不起作用另前面的式子等于 n|2|1 因为2|12不起作用所以根本不影响n。因此我们可以提前结束int subarrayBitwiseORs(vectorint arr) { unordered_setintst; int lenarr.size(); for(int l 0; l len ; l){ st.insert(arr[l]); for(int r l-1;r0 (arr[r]|arr[l])!arr[r]; --r){ arr[r] arr[r]|arr[l]; st.insert(arr[r]); } } return st.size(); }那么时间复杂度是多少呢如果每次arr[r] | arr[l]都能不等于arr[l]那么说明至少产生了一个新的位置1如果每次都是至少置1而int的位数去除符合位最多只有31次。因此可以说明是常数级别粗糙的看成O(n)。那么这个方式可以用到相同情况的题目上2411. 按位或最大的最小子数组长度 - 力扣LeetCode这里大家可以先自己做一下因为思路差不多就不多赘述。class Solution { public: vectorint smallestSubarrays(vectorint nums) { int num0,len nums.size(); vectorpairint,intret(len); for(int i0;ilen;i){ ret[i]{nums[i],1}; for(int j i-1;j0((nums[j]|nums[i])!nums[j]);--j){ nums[j]|nums[i]; if(nums[j]ret[j].first)ret[j]{nums[j],i-j1}; } } vectorintans; for(auto[_,k]:ret)ans.emplace_back(k); return ans; } };3171. 找到按位或最接近 K 的子数组 - 力扣LeetCodeclass Solution { public: int minimumDifference(vectorint nums, int k) { int ret 0x3f3f3f3f,lennums.size(); for(int i0;ilen;i){ ret min(abs(k-nums[i]),ret); for(int ji-1;j0((nums[j]|nums[i])!nums[j]);--j){ nums[j]|nums[i]; ret min(abs(k-nums[j]),ret); } } return ret; } };与运算那么我们能否推而广之用到与运算的这种求子数组运算值的呢可以的int AND(vectorint arr) { int lenarr.size(); for(int l 0; l len ; l){ for(int r l-1;r0(arr[r]arr[l])!arr[r]; --r){ arr[r] arr[r]arr[l]; st.insert(arr[r]); } } return ...; } // 0 1 2 // 0 // 01 1 // 012 12 2如果出现arr[l]arr[r] arr[r] 说明arr[l]集合更大且r左边的集合会更小完全用不到arr[l]。因此可以提前退出。时间复杂度依旧最坏情况O(n)*31粗糙来看就是O(n)。

相关文章:

C++ 子数组位运算结果 题型

或运算 898. 子数组按位或操作 - 力扣(LeetCode) 我们直接看题,意思很明显,就是找出所有子数组,然后将子数组各个数相或得到的结果有多少个不同。 这里我们首先想到的就是直接把所有子数组求出来在或起来&#xff0c…...

网站SEO推广需要多少钱_如何选择合适的网站 SEO 推广服务商

网站SEO推广需要多少钱_如何选择合适的网站 SEO 推广服务商 一、了解网站SEO推广的基本概念 在当今的数字时代,网站SEO推广(Search Engine Optimization,搜索引擎优化)已成为任何企业在互联网上获得流量和客户的关键手段之一。S…...

基于下垂控制的光储直流微电网模型 1.模型由光伏和储能以及直流负载组成 2.光伏采用扰动观测法...

基于下垂控制的光储直流微电网模型1.模型由光伏和储能以及直流负载组成 2.光伏采用扰动观测法实现最大功率输出,储能刚开始采用恒定电压控制,电压稳定在额定电压附近,2s之后采用下垂控制,母线电压降低,达到目标光伏板在…...

如何处理Java LocalDateTime与Oracle TIMESTAMP WITH TIME ZONE的时区对应

根本原因是LocalDateTime无时区信息,JDBC驱动按JVM时区(如Asia/Shanghai)将其解释为带偏移时间点;存UTC时间须用localDateTime.atZone(ZoneOffset.UTC).toOffsetDateTime()显式指定偏移。Oracle插入时TIMESTAMP WITH TIME ZONE字段…...

CSS移动端解决阴影遮挡效果_利用box-shadow设置外扩散距离

box-shadow外扩散失效主因是父容器overflow隐藏、层叠上下文触发或参数误设;需检查overflow/transform/filter影响,用translateZ(0)强制分层,伪元素移出阴影,合理组合inset与外扩,并控制扩散距离≤8px。box-shadow 外扩…...

实现鼠标滚轮在容器滚动到底部后无缝过渡到页面滚动

本文介绍如何通过 javascript 检测固定高度溢出容器的滚动边界,在用户滚至底部时立即触发页面滚动,消除原生行为中约1秒的延迟等待,实现平滑、无中断的滚动接力。 本文介绍如何通过 javascript 检测固定高度溢出容器的滚动边界&#xff…...

IndexTTS 2.0应用案例:如何用它快速生成有声书和播客内容

IndexTTS 2.0应用案例:如何用它快速生成有声书和播客内容 1. 引言:声音创作的新范式 在数字内容爆炸式增长的今天,有声书和播客市场正以每年20%以上的速度扩张。但高质量音频内容的制作却面临两大痛点:专业配音成本高昂&#xf…...

[具身智能-218]:针对不同编程语言和应用场景,AI自动编程擅长与不擅长之处?

AI自动编程的能力在不同编程语言和应用场景下表现出显著差异。选择合适组合,能让AI成为强大的“加速器”,反之则可能带来风险。 核心原则是:AI对主流语言和标准化任务的支持最好,而在处理底层、高性能或复杂业务逻辑时则需要人工…...

细说杨乃武与小白菜案

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、案件二、精神分析学---心理防御机制三、关于我自己总结前言 一、案件 略,后面补 二、精神分析学—心理防御机制 在这个案件我主要关注县令和小…...

5个步骤搭建P2P视频分发系统:PCDN实战指南

5个步骤搭建P2P视频分发系统:PCDN实战指南 【免费下载链接】PCDN PCDN is an Peer to peer CDN for video, its Hybrid CDN/P2P Architecture. HTTP Live Streaming, WebRTC, videojs and peerjs, HLS and Video for broadcasts 项目地址: https://gitcode.com/g…...

DDrawCompat:让经典软件重获新生的兼容性解决方案

DDrawCompat:让经典软件重获新生的兼容性解决方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/DDrawCompa…...

数字化转型架构下的数据安全治理指南:以数据安全为核心的安全立体防御体系、数据安全体系、数据安全现状评估报告···(附相关资料)

微信公众号:木木自由,更多数据分析,经营分析、财务分析、商业分析、数据治理、数据要素、数据资产干货以及资料分享木木自由 数据分析领地Digital Technology Summit在数字经济深度发展的今天,数字化转型已成为企业生存与发展的…...

C语言完美演绎6-21

/* 范例&#xff1a;6-21 */#include<stdio.h> #include<conio.h>int main(){int n;printf("这是nn乘法表&#xff0c;请输入一值>");scanf("%d",&n);int i1;for(;i<n;) /* i从1到n次循环*/{int j1;for(;j<n;) /…...

c语言完美演绎6-20

/* 范例&#xff1a;6-20 */#include<stdio.h> #include<conio.h>int main(){int a;printf("请输入你的分数0-100>");scanf("%d",&a);if((a>0) && (a<60))printf("你被当了");else if((a>60) && (a…...

seo关键词挖掘工具哪个好_seo数据分析工具哪个最强

选择最佳SEO关键词挖掘工具和SEO数据分析工具指南 SEO关键词挖掘工具哪个好 在当今数字营销的竞争激烈环境中&#xff0c;选择合适的SEO关键词挖掘工具至关重要。这不仅能帮助你找到最相关、最受欢迎的关键词&#xff0c;还能显著提升你的网站流量和搜索引擎排名。市面上哪些…...

Unity游戏插件加载器MelonLoader完全指南:从安装到精通

Unity游戏插件加载器MelonLoader完全指南&#xff1a;从安装到精通 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 在Unity游戏…...

Godot 4 2D 物理引擎位置初始化踩坑:add_child() 和 position 到底谁先? (错误位置触发物理事件)

Godot 4 2D 物理引擎位置初始化踩坑&#xff1a;add_child() 和 position 到底谁先&#xff1f; 在 Godot 4 做 2D 游戏时&#xff0c;很多人都会遇到一个很诡异的问题&#xff1a; 我明明想把一个 PackedScene 实例生成在 B 点&#xff0c;结果它却会在默认位置 A 点 短暂触发…...

实战演练:基于快马平台与方锐理念构建短视频智能配乐应用

最近在做一个短视频创作的小工具&#xff0c;发现给视频配乐真是个技术活。正好看到网易方锐的AI音乐技术挺火的&#xff0c;就想着能不能用它的理念做个智能配乐助手。在InsCode(快马)平台上试了试&#xff0c;没想到还真搞出了一个能跑起来的demo&#xff0c;分享下我的实现思…...

Project AirSim避障实战:深度图分割与动态航向规划详解

1. 深度图避障的核心原理 深度图避障是无人机自主导航中最基础也最关键的环节之一。简单来说&#xff0c;它就像给无人机装上了一双能精确测距的"眼睛"。这双眼睛看到的不是普通照片&#xff0c;而是一张每个像素都带有距离信息的特殊图像——我们称之为深度图&#…...

告别编译噩梦:用VSCode + CMake Tools 在Windows上优雅地构建和调试ncnn项目

告别编译噩梦&#xff1a;用VSCode CMake Tools 在Windows上优雅地构建和调试ncnn项目 对于习惯使用轻量级现代编辑器的开发者来说&#xff0c;在Windows平台编译ncnn这类高性能神经网络框架往往意味着要在笨重的IDE和晦涩的命令行工具之间艰难抉择。本文将展示如何通过VSCode…...

多头注意力机制详解:如何提升模型表达能力并减少计算复杂度

多头注意力机制详解&#xff1a;如何提升模型表达能力并减少计算复杂度 在深度学习领域&#xff0c;注意力机制已经成为提升模型性能的关键技术之一。特别是多头注意力机制&#xff0c;它通过并行处理多个注意力头&#xff0c;不仅增强了模型捕捉不同特征子空间的能力&#xff…...

生态安全格局分析第一步:如何为你的ArcGIS版本(10.0-10.8/Pro)正确配对Linkage Mapper和Circuitscape?

生态安全格局分析工具链的版本兼容性全解析&#xff1a;从ArcGIS到Linkage Mapper的精准匹配 当你在深夜的办公室里盯着屏幕&#xff0c;反复尝试让Linkage Mapper与Circuitscape协同工作时&#xff0c;是否曾因版本不匹配而遭遇令人崩溃的错误提示&#xff1f;作为生态安全格局…...

别再死记硬背公式了!用PyTorch手把手实现PPO算法(附完整代码与调参心得)

从零实现PPO算法&#xff1a;避开公式陷阱的实战指南 当你第一次翻开PPO论文&#xff0c;看到满屏的数学符号和晦涩的术语时&#xff0c;是否感到一阵眩晕&#xff1f;作为强化学习领域最受欢迎的算法之一&#xff0c;PPO&#xff08;Proximal Policy Optimization&#xff09;…...

为什么 Transformer 这么强?——对比 CNN 和 RNN(Version B)

为什么 Transformer 这么强&#xff1f;——对比 CNN 和 RNN&#xff08;Version B&#xff09; &#x1f4da; 《从零到一造大脑&#xff1a;AI架构入门之旅》专栏 专栏定位&#xff1a;面向中学生、大学生和 AI 初学者的科普专栏&#xff0c;用大白话和生活化比喻带你从零理解…...

tcc-g15:为Dell G15笔记本解锁三重散热控制能力

tcc-g15&#xff1a;为Dell G15笔记本解锁三重散热控制能力 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 当你的Dell G15笔记本在渲染视频时风扇呼啸&#x…...

从特征多项式到行列式:揭秘矩阵特征值之积的几何意义

1. 特征多项式&#xff1a;打开矩阵奥秘的钥匙 我第一次接触特征多项式时&#xff0c;完全被这个抽象的概念搞晕了。直到有一天&#xff0c;我的导师用了一个简单的比喻&#xff1a;"特征多项式就像是矩阵的DNA检测报告&#xff0c;它能告诉我们这个矩阵最本质的特性。&qu…...

YOLOv8训练Visidron小目标检测数据集YOLO训练结果模型➕数据集可直接使用在读博士,欢迎打扰

YOLOv8训练Visidron小目标检测数据集 YOLO训练结果模型➕数据集 可直接使用 在读博士&#xff0c;欢迎打扰...

第6章 数据类型转换-6.7 转换为字典

通过使用dict()函数可以将列表或元组转换为字典。其语法格式如下&#xff1a;dict([x])其中&#xff0c;参数x为可选参数&#xff0c;表示列表或元组&#xff0c;且该列表或元组必须是键值对形式&#xff0c;如果省略该参数&#xff0c;则该函数返回空字典。示例代码如下&#…...

Qwen3.6-Plus 全面解析:性能提升、API 接入与 Claude Code 实战配置

点击下方“JavaEdge”&#xff0c;选择“设为星标”第一时间关注技术干货&#xff01;本文已收录在Github&#xff0c;关注我&#xff0c;紧跟本系列专栏文章&#xff0c;咱们下篇再续&#xff01;&#x1f680; 魔都架构师 | 全网30W技术追随者&#x1f527; 大厂分布式系统/数…...

第6章 数据类型转换-6.6 转换为元组

通过使用tuple()函数可以将字符串、列表或集合转换为元组。其语法格式如下&#xff1a;tuple([x])其中&#xff0c;参数x为可选参数&#xff0c;表示字符串、列表或集合&#xff0c;如果省略该参数&#xff0c;则该函数返回空元组。示例代码如下&#xff1a;# 资源包\Code\chap…...