LeetCode 2917.找出数组中的 K-or 值:基础位运算

【LetMeFly】2917.找出数组中的 K-or 值:基础位运算

力扣题目链接:https://leetcode.cn/problems/find-the-k-or-of-an-array/

给你一个下标从 0 开始的整数数组 nums 和一个整数 k

nums 中的 K-or 是一个满足以下条件的非负整数:

  • 只有在 nums 中,至少存在 k 个元素的第 i 位值为 1 ,那么 K-or 中的第 i 位的值才是 1 。

返回 numsK-or 值。

注意 :对于整数 x ,如果 (2i AND x) == 2i ,则 x 中的第 i 位值为 1 ,其中 AND 为按位与运算符。

 

示例 1:

输入:nums = [7,12,9,8,9,15], k = 4
输出:9
解释:nums[0]、nums[2]、nums[4] 和 nums[5] 的第 0 位的值为 1 。
nums[0] 和 nums[5] 的第 1 位的值为 1 。
nums[0]、nums[1] 和 nums[5] 的第 2 位的值为 1 。
nums[1]、nums[2]、nums[3]、nums[4] 和 nums[5] 的第 3 位的值为 1 。
只有第 0 位和第 3 位满足数组中至少存在 k 个元素在对应位上的值为 1 。因此,答案为 2^0 + 2^3 = 9 。

示例 2:

输入:nums = [2,12,1,11,4,5], k = 6
输出:0
解释:因为 k == 6 == nums.length ,所以数组的 6-or 等于其中所有元素按位与运算的结果。因此,答案为 2 AND 12 AND 1 AND 11 AND 4 AND 5 = 0 。

示例 3:

输入:nums = [10,8,5,9,11,6,8], k = 1
输出:15
解释:因为 k == 1 ,数组的 1-or 等于其中所有元素按位或运算的结果。因此,答案为 10 OR 8 OR 5 OR 9 OR 11 OR 6 OR 8 = 15 。

 

提示:

  • 1 <= nums.length <= 50
  • 0 <= nums[i] < 231
  • 1 <= k <= nums.length

方法一:基础位运算

位运算

AC这道题,只需要懂得两个位运算操作:

  1. 计算 t t t二进制下第 i + 1 i+1 i+1是否为 1 1 1KaTeX parse error: Expected 'EOF', got '&' at position 10: (t >> i) &̲ 1
  2. a n s ans ans二进制下的第 i + 1 i+1 i+1置为 1 1 1 a n s ∣ = ( 1 < < i ) ans |= (1 << i) ans=(1<<i)

0 ≤ n u m s [ i ] ≤ 2 31 0\leq nums[i] \le 2^{31} 0nums[i]231,所以用变量 i i i 0 0 0 30 30 30枚举每一位,统计所有数字中这一位为 1 1 1的个数,若达到 k k k则令答案的这一位为 1 1 1

  • 时间复杂度 O ( l e n ( n u m s ) × log ⁡ n u m s [ i ] ) O(len(nums)\times \log nums[i]) O(len(nums)×lognums[i]),其中 log ⁡ n u m s [ i ] = 31 \log nums[i]=31 lognums[i]=31
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
class Solution {
public:
    int findKOr(vector<int>& nums, int k) {
        int ans = 0;
        for (int i = 0; i < 32; i++) {  // nums[i] < 2^31不是≤,因此这里其实i = 0到i < 31即可
            int cnt = 0;
            for (int t : nums) {
                cnt += ((t >> i) & 1);
            }
            if (cnt >= k) {
                ans |= (1 << i);
            }
        }
        return ans;
    }
};
Python
# from typing import List

class Solution:
    def findKOr(self, nums: List[int], k: int) -> int:
        ans = 0
        for i in range(31):
            cnt = 0
            for t in nums:
                cnt += ((t >> i) & 1)
            if cnt >= k:
                ans |= (1 << i)
        return ans

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/136497896

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/436623.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

横琴正式封关运行,惟客数据都做了什么?

​作为中国实施高水平制度型开放的重大探索&#xff0c;位于珠海横琴岛的横琴粤澳深度合作区于2024年3月1日零时正式实施分线管理封关运行&#xff0c;共设1个“一线”口岸、7个“二线”海关作业现场&#xff0c;覆盖旅检、货运、通关、稽&#xff08;核&#xff09;查等多线条…

第26章 模块

本章内容  理解模块模式  凑合的模块系统  使用前 ES6 模块加载器  使用 ES6 模块 现代 JavaScript 开发毋庸置疑会遇到代码量大和广泛使用第三方库的问题。解决这个问题的方案通常需要把代码拆分成很多部分&#xff0c;然后再通过某种方式将它们连接起来。 文章目录 …

MySQL基础-----函数

目录 前言 一、字符串函数 演示 案例 二、数值函数 演示 案例 三、日期函数 演示 案例 四、流程函数 演示 案例 前言 本期我们就开始MySQL中函数的学习。函数 是指一段可以直接被另一段程序调用的程序或代码。 也就意味着&#xff0c;这一段程序或代码在MySQL中 已经…

Linux之线程概念

目录 一、细粒度划分 1、堆区细粒度划分 2、物理内存和可执行程序细粒度划分 3、虚拟地址到物理地址的转化 二、线程的概念 1、基本概念 2、线程的优点 3、线程的缺点 4、线程异常 5、线程用途 三、Linux下的进程和线程 一、细粒度划分 1、堆区细粒度划分 在语言…

php安装kafka

我的开发环境是php7.3 ,先来部署两个php扩展&#xff0c;php7.3目录下放librdkafka.dll,ext/php_rdkafka.dll&#xff0c;php.ini增加,[rdkafka] extension php_rdkafka.dll php7.3对应的扩展包链接&#xff1a;PECL :: Package :: rdkafka 看自己php版本对应在这里找PECL :: …

antd vue 选择控件的使用

Ant Design Vue-------Select 选择器 今天就讲讲Ant Design Vue下的控件----select 下拉框 结合项目中的需求&#xff0c;讲一下该控件如何配置&#xff0c;需求&#xff1a; &#xff08;1&#xff09;设置控件的宽度和高度 &#xff08;2&#xff09;绑定数据源 &#x…

IT人才职业发展路径

IT人才的职业发展路径通常是多样化的&#xff0c;因为IT领域涵盖了广泛的技术和职能角色。以下是一个典型的IT人才职业发展路径的梳理&#xff0c;但具体情况会根据个人兴趣、技能、经验和行业需求而有所不同&#xff1a; 入门级岗位&#xff1a; 技术支持工程师&#xff1a;提…

CVE-2024-25600 WordPress Bricks Builder RCE-漏洞分析研究

本次代码审计项目为PHP语言&#xff0c;我将继续以漏洞挖掘者的视角来分析漏洞的产生&#xff0c;调用与利用..... 前方高能&#xff0c;小伙伴们要真正仔细看咯..... 漏洞简介 CVE-2024-25600 是一个严重的&#xff08;CVSS 评分 9.8&#xff09;远程代码执行 (RCE) 漏洞&am…

SpringBoot初步学习

SpringBoot 今日目标&#xff1a; 掌握基于SpringBoot框架的程序开发步骤 熟练使用SpringBoot配置信息修改服务器配置 基于SpringBoot的完成SSM整合项目开发 1. SpringBoot简介 SpringBoot 其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。 1.1 SpringBoot快速…

ROS从入门到精通4-2:Docker安装ROS、可视化仿真与终端复用

目录 0 专栏介绍1 Docker安装ROS2 Docker可视化仿真2.1 显示配置2.2 启动容器 3 终端复用工具3.1 session操作3.2 window操作3.3 pane操作3.4 其他操作 0 专栏介绍 本专栏旨在通过对ROS的系统学习&#xff0c;掌握ROS底层基本分布式原理&#xff0c;并具有机器人建模和应用ROS…

大数据开发-Hadoop之YARN介绍以及实战

文章目录 YARN基本介绍YARN的结构分析YARN中的调度器实际案例&#xff1a;YARN多资源队列的配置和使用 YARN基本介绍 实现Hadoop集群的资源共享不仅支持MapReduce&#xff0c;还支持Spark&#xff0c;Flink等计算 YARN的结构分析 主要复制集群资源的管理和调度&#xff0c;支…

【论文阅读】单词级文本攻击TAAD2.2

TAAD2.2论文概览 0.前言1-101.Bridge the Gap Between CV and NLP! A Gradient-based Textual Adversarial Attack Frameworka. 背景b. 方法c. 结果d. 论文及代码 2.TextHacker: Learning based Hybrid Local Search Algorithm for Text Hard-label Adversarial Attacka. 背景b…

javaWebssh水利综合信息管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh水利综合信息管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCA…

BJFU|操作系统考试复习纲要(思维导图版)

纲要涵盖五个章节&#xff0c;每节一图。红色框部分为必考重点&#xff0c;建议认真复习。

数据结构与算法-归并排序

引言 在计算机科学的广阔领域中&#xff0c;数据结构与算法犹如两大基石&#xff0c;支撑着软件系统高效运行。本文将深度剖析一种基于分治策略的排序算法——归并排序&#xff0c;并探讨其原理、实现步骤以及优缺点&#xff0c;以期帮助读者深入理解这一高效的排序方法。 一、…

用开发CesiumJS模拟飞机飞行应用(一,基本功能)

本部分向您展示如何构建您的第一个 Cesium 应用程序&#xff0c;以可视化模拟从旧金山到哥本哈根的真实航班&#xff0c;并使用 FlightRadar24收集的雷达数据。您将学习如何&#xff1a; 在网络上设置并部署您的 Cesium 应用程序。 添加全球 3D 建筑物、地形和图像的基础图层。…

MySQL 学习笔记(基础篇 Day2)

「写在前面」 本文为黑马程序员 MySQL 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. MySQL 学习笔记&#xff08;基础篇 Day1&#xff09; 目录 3 函数 3.1 字符串函数 3…

PostgreSQL开发与实战(6.2)体系结构2

作者&#xff1a;太阳 二、逻辑架构 graph TD A[database] -->B(schema) B -->C[表] B -->D[视图] B -->E[触发器] C -->F[索引] tablespace 三、内存结构 Postgres内存结构主要分为 共享内存 与 本地内存 两部分。共享内存为所有的 background process提供内…

VI-ORBSLAM2编译运行

ORB-SLAM2编译运行 源码地址电脑配置环境配置编译轨迹保存为tum格式运行结果Euroc数据集 源码地址 源码链接&#xff1a;https://github.com/jingpang/LearnVIORB 电脑配置 Ubuntu 18.04 ROS Melodic GTSAM 4.0.2 CERES 1.14.0 pcl1.8vtk8.2.0opencv3.2.0 环境配置 之前…

简易版手淘视频播放器开发心路历程

需求背景 简单描述一下这个功能&#xff1a;在一个走马灯组件里面第一屏是一个视频&#xff0c;第二屏第三屏是图片&#xff0c;点击播放视频&#xff0c;播放过程中滚动窗口&#xff0c;视频 fixed 在窗口顶部&#xff0c;回到顶部&#xff0c;视频还原&#xff0c;两个窗口视…