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

力扣2680题解

记录

2025.5.9

题目:

在这里插入图片描述

思路:

1.计算初始或值:首先计算数组中所有元素的按位或结果 allOr,这表示在不进行任何左移操作时数组的或值。
2.计算固定或值:在计算 allOr 的同时,计算一个 fixed 值,这个值表示在左移某个元素时,其他元素的或结果。具体来说,fixed 是 allOr 与当前元素的与操作的结果的累积或。
3.尝试左移每个元素:对于数组中的每一个元素,将其左移 k 位后,计算新的或值。新的或值由三部分组成:
allOr ^ x:表示除了当前元素外其他元素的或结果。
fixed:表示在左移当前元素时其他元素的固定或部分。
x << k:当前元素左移 k 位后的值。
4.取最大值:在所有可能的左移操作中,选择最大的或值作为结果。

解题步骤:

1.初始化变量:allOr 初始化为0,用于累积所有元素的或结果;fixed 初始化为0,用于累积固定或部分。
2.计算 allOr 和 fixed:遍历数组,更新 fixed 为 fixed | (allOr & x),即当前元素与之前所有元素的或结果的与操作再或上之前的 fixed;更新 allOr 为 allOr | x,即累积或操作。
3.计算最大或值:再次遍历数组,对于每个元素 x,计算左移 k 位后的新或值。新或值由三部分组合而成:
allOr ^ x:排除当前元素后的或结果。
fixed:固定或部分。
x << k:当前元素左移 k 位后的值。
4.返回结果:在所有可能的左移操作中,取最大的或值作为最终结果。

代码:

class Solution {public long maximumOr(int[] nums, int k) {int allOr = 0;int fixed = 0;for (int x : nums) {fixed |= allOr & x; allOr |= x; }long ans = 0;for (int x : nums) {ans = Math.max(ans, (allOr ^ x) | fixed | ((long) x << k));}return ans;}
}

复杂度:

O(N)
O(1)

相关文章:

  • 趣味编程:四叶草
  • 一种混沌驱动的后门攻击检测指标
  • 关于chatshare.xyz激活码使用说明和渠道指南!
  • vue数据可视化开发echarts等组件、插件的使用及建议-浅看一下就行
  • MNIST 手写数字分类
  • HVV面试题汇总合集
  • 雷达工程师面试题目
  • Redis 基础详解:从入门到精通
  • 【Redis】Redis的主从复制
  • 5G-A来了!5G信号多个A带来哪些改变?
  • C++ stl中的priority_queue的相关函数用法
  • 大模型都有哪些超参数
  • 如何实现Flask应用程序的安全性
  • 接口在函数参数和对象类型中的应用
  • 3D虚拟工厂vue3+three.js
  • 使用FastAPI和React以及MongoDB构建全栈Web应用07 FastAPI实现经典三层架构
  • [Java实战]Spring Boot 解决跨域问题(十四)
  • 聊一聊常见的超时问题:timeout
  • 解决stm32HAL库使用vscode打开,识别不到头文件及uint8_t等问题
  • pandas读取pymysql和解析excel的一系列问题(版本不匹配)
  • 俄土外长通话讨论俄乌谈判问题
  • 英国首相斯塔默住所起火,警方紧急调查情况
  • 民生谣言误导认知,多方联动守护清朗——中国互联网联合辟谣平台2025年4月辟谣榜综述
  • 上海交大计算机学院成立,设多个拔尖人才特色班
  • 十大券商看后市|A股中枢有望逐步震荡抬升,把握结构性行情
  • 深入贯彻中央八项规定精神学习教育中央指导组完成进驻