【Leetcode 每日一题】2680. 最大或值

news/2025/3/22 17:35:17/

问题背景

给你一个下标从 0 0 0 开始长度为 n n n 的整数数组 n u m s nums nums 和一个整数 k k k。每一次操作中,你可以选择一个数并将它乘 2 2 2
你最多可以进行 k k k 次操作,请你返回 n u m s [ 0 ] ∣ n u m s [ 1 ] ∣ . . . ∣ n u m s [ n − 1 ] nums[0] | nums[1] | ... | nums[n - 1] nums[0]nums[1]∣...∣nums[n1] 的最大值。
a ∣ b a | b ab 表示两个整数 a a a b b b按位或 运算。

数据约束

  • 1 ≤ n u m s . l e n g t h ≤ 1 0 5 1 \le nums.length \le 10 ^ 5 1nums.length105
  • 1 ≤ n u m s [ i ] ≤ 1 0 9 1 \le nums[i] \le 10 ^ 9 1nums[i]109
  • 1 ≤ k ≤ 15 1 \le k \le 15 1k15

解题过程

要求最终或运算的结果最大,应该尽可能地增加它的二进制长度。
2 2 2 和左移是完全等价的,集中对一个数进行不断地左移要比对多个数分散操作更有可能增加数字的二进制长度。
所以只需要遍历并讨论对每个数字进行操作得到的结果,取最大值即可。
要快速计算某个位置上的或运算结果,除了它本身左移之后的数值,还需要它的前后缀或运算结果。为了快速计算,可以先处理好前后缀的值。

具体实现

class Solution {public long maximumOr(int[] nums, int k) {int n = nums.length;int[] sufOrSum = new int[n];for (int i = n - 2; i >= 0; i--) {sufOrSum[i] = sufOrSum[i + 1] | nums[i + 1];}long res = 0;int preOrSum = 0;for (int i = 0; i < n; i++) {res = Math.max(res, preOrSum | ((long) nums[i] << k) | sufOrSum[i]);preOrSum |= nums[i];}return res;}
}

http://www.ppmy.cn/news/1581181.html

相关文章

Prometheus Exporter系列-Postgres_Exporter一键部署

这是postgresql exporter的一件安装&#xff0c;经测试可以稳定运行&#xff0c;重新运行会删除旧exporter相关信息创建新的 #!/bin/bash# PostgreSQL Exporter 一键安装脚本&#xff08;最终版&#xff09; # 使用方法: ./pg_exporter_setup.sh <导出端口>set -e# 版本…

DeepSeek写打台球手机小游戏

DeepSeek写打台球手机小游戏 提问 根据提的要求&#xff0c;让DeepSeek整理的需求&#xff0c;进行提问&#xff0c;内容如下&#xff1a; 请生成一个包含以下功能的可运行移动端打台球小游戏H5文件&#xff1a; 要求 可以重新开始游戏 可以暂停游戏 有白球和其他颜色的球&am…

天翼云:Apache Doris + Iceberg 超大规模湖仓一体实践

导读&#xff1a;天翼云基于 Apache Doris 成功落地项目已超 20 个&#xff0c;整体集群规模超 50 套&#xff0c;部署节点超 3000 个&#xff0c;存储容量超 15PB。天翼云基于 Apache Doris 和 Apache Iceberg 构建的湖仓一体方案&#xff0c;兼具灵活性、高性能和低成本优势&…

PageHelper插件依赖引入不报错,但用不了

情况: 父模块pom. Xml 引入1. 4. 0以上版本的pagehelper-spring-boot-starter。 要用到插件的子模块&#xff0c;去掉版本号&#xff0c;引入和父模块一样的依赖。 引入成功&#xff0c;没有报错&#xff0c;但是打开右边的maven里面没有找到PageHelper插件。 终端清空并重…

【C++指南】内存管理完全手册:new/delete

&#x1f31f; 各位看官好&#xff0c;我是egoist2023&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; &#x1f680; 今天来学习C内存管理的相关知识。 &#x1f44d; 如果觉得这篇文章有帮助&#xff0c;欢迎您一键三连&#xff0c;分享…

【回归算法解析系列09】梯度提升回归树(GBRT, XGBoost, LightGBM)

【回归算法解析系列】梯度提升回归树&#xff08;GBRT, XGBoost, LightGBM&#xff09; 1. 梯度提升回归树&#xff1a;迭代优化的艺术 梯度提升回归树&#xff08;Gradient Boosting Regression Tree, GBRT&#xff09;作为集成学习领域中基于Boosting思想的强大算法&#x…

Android Compose 框架矢量图标深入剖析(七)

Android Compose 框架矢量图标深入剖析 一、引言 在移动应用开发中&#xff0c;图标是界面设计的重要组成部分&#xff0c;它能够直观地传达信息&#xff0c;提升用户体验。而矢量图标因其可无损缩放、占用空间小等优点&#xff0c;在 Android 开发中得到了广泛应用。Android…

高频SQL 50 题(持续更新)

SQL的编写与运用 0. 写在前面 最近学习了数据库系统概论&#xff0c;其中涉及到了关于SQL语句的编写&#xff0c;感觉理论知识不足以让我掌握相关的编写方式&#xff0c;因此选择刷力扣上的题目进行复习巩固。 时间不是很多&#xff0c;可能不会经常更新&#xff0c;有时间写…