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

lecode2680. 最大或值-medium

1 题目:最大或值

官方标定难度:中

给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 k 。每一次操作中,你可以选择一个数并将它乘 2 。

你最多可以进行 k 次操作,请你返回 nums[0] | nums[1] | … | nums[n - 1] 的最大值。

a | b 表示两个整数 a 和 b 的 按位或 运算。

示例 1:

输入:nums = [12,9], k = 1
输出:30
解释:如果我们对下标为 1 的元素进行操作,新的数组为 [12,18] 。此时得到最优答案为 12 和 18 的按位或运算的结果,也就是 30 。

示例 2:

输入:nums = [8,1,2], k = 2
输出:35
解释:如果我们对下标 0 处的元素进行操作,得到新数组 [32,1,2] 。此时得到最优答案为 32|1|2 = 35 。

提示:

1 < = n u m s . l e n g t h < = 1 0 5 1 <= nums.length <= 10^5 1<=nums.length<=105
1 < = n u m s [ i ] < = 1 0 9 1 <= nums[i] <= 10^9 1<=nums[i]<=109
1 < = k < = 15 1 <= k <= 15 1<=k<=15

2 solution

这题是今天的每日一题,求最大或值。乘以 2 最多 k 次。
1 乘以 2 其实在左移一次,所以那个最高 bit 位数最大,就应该移动谁,而且越移动越大,所以应该在一个数字上集中左移 k 次。
2 为了省略计算次数,所以将前缀和后缀或结果保存下来,结下来扫描一次数组保存最大值即可。

代码

class Solution {
public:
long long maximumOr(vector<int> &nums, int k) {
    if(nums.size() == 1) return 1ll * nums[0] << k;
    int n = nums.size();
    int pre[n], suf[n];
    pre[0] = nums[0];
    for (int i = 1; i < n; i++) pre[i] = pre[i - 1] | nums[i];

    suf[n - 1] = nums[n - 1];
    for (int i = n - 2; i >= 0; i--) suf[i] = suf[i + 1] | nums[i];

    long long s = (long long) nums[0] << k;
    s |= suf[1];

    for (int i = 1; i < n - 1; i++) {
        long long c = nums[i];
        s = max(s, (c << k) | suf[i + 1] | pre[i - 1]);
    }
    s = max(s, ((long long) nums[n - 1] << k) | pre[n - 2]);
    return s;
}
};

结果

在这里插入图片描述

相关文章:

  • <el-autocompoete>下拉列表,点击选择之后的操作事件
  • 【人工智能】LM Studio 的 GPU 加速:释放大模型推理潜能的极致优化
  • 源码分析之Leaflet中dom模块DomEvent.DoubleTap的实现原理
  • STM32标准库之I2C示例代码
  • mac系统conda的python环境下安装uWSGI报缺少libpython3.9.a问题解决方法
  • Linux:gsd-account进程异常内存泄漏排查
  • 一个免费 好用的pdf在线处理工具
  • Jmeter旧版本如何下载
  • 接口自动化测试框架详解
  • 永磁同步电机模型第三篇之两相电机坐标变换
  • SolidWorks使用显卡教程
  • struts1+struts2项目兼容升级到了spring boot 2.7
  • Blender标注工具
  • 【Python】超详细实例讲解python多线程(threading模块)
  • SpringBoot入门-(1) Maven【概念+流程】
  • UNIX网络编程笔记:套接字
  • C#通过API接口返回流式响应内容---SignalR方式
  • 小科普《DNS服务器》
  • 用短说社区打造你的专属游戏社区
  • FreeRTOS列表和列表项
  • 中国乒协坚决抵制恶意造谣,刘国梁21日将前往多哈参加国际乒联会议
  • 陈吉宁龚正黄莉新胡文容等在警示教育基地参观学习,出席深入贯彻中央八项规定精神学习教育交流会
  • 陕西宁强县委书记李宽任汉中市副市长
  • 来伊份发布关于消费者反映蜜枣粽问题处理的情况说明:与消费者达成和解
  • 国产水陆两栖大飞机AG600批产首架机完成总装下线
  • 科创板年内第3家!健信超导IPO获受理,拟募资8.65亿