LeetCode---382周赛---位运算

题目列表

3019. 按键变更的次数

3020. 子集中元素的最大数量

3021. Alice 和 Bob 玩鲜花游戏

3022. 给定操作次数内使剩余元素的或值最小

一、按键变更的次数

 题目简单明了,就是看相邻的两个字母是否相等,不区分大小写,直接遍历统计即可,这里讲一个位运算的小技巧

代码如下

class Solution {
public:
    int countKeyChanges(string s) {
        int ans=0;
        for(int i=1;i<s.size();i++){
            ans+=(s[i-1]&31)!=(s[i]&31);//用后五个比特位判断字母是否相同
        }
        return ans;
    }
};

class Solution {
public:
    int countKeyChanges(string s) {
        int ans=0;
        for(int i=1;i<s.size();i++){
            ans+=(s[i-1]|32)!=(s[i]|32);//全部转成小写看是否相等
        }
        return ans;
    }
};

class Solution {
public:
    int countKeyChanges(string s) {
        int ans=0;
        for(int i=1;i<s.size();i++){
            ans+=((s[i-1]&(~32))!=(s[i]&(~32)));//全部转成大写看是否相等
        }
        return ans;
    }
};

二、子集中元素的最大数量

这题不是很难,只要暴力枚举出所有子集的长度,取最大长度就行。但是这题的坑比较多,要注意很多细节,具体看代码

class Solution {
public:
    int maximumLength(vector<int>& nums) {
        unordered_map<int,int>cnt;
        for(auto x:nums) cnt[x]++;//统计数字出现的次数
        int ans=1;
        for(auto [x,y]:cnt){//枚举哈希表,即枚举每个数为子集的第一个数的情况
            if(x==1) ans=max(ans,y-(y%2==0));//如果第一个数为1,需要特判
            else{
                int tmp=x,k=0;
                while(cnt.count(tmp)){
                    k+=2;
                    //注意超int范围和数只出现一次的情况
                    if(cnt[tmp]==1||1LL*tmp*tmp>INT_MAX){
                        k--;
                        break;
                    }
                    tmp*=tmp;
                }
                if(k%2==0) k--;//注意tmp不存在的情况
                ans=max(ans,k);
            }
        }
        return ans;
    }
};

三、Alice和Bob玩鲜花游戏

这题就是阅读理解找规律,我们先来只考虑两人拿一条边上的鲜花的情况,如果是奇数,Alice必赢,如果是偶数,Alice必输,现在我们来想想,两条边呢,为了保证Alice必赢,我们只要保证一条边的鲜花为偶数,另外一条边的鲜花为奇数即可,为什么?

因为Alice只要从奇数中拿掉一个,剩下的两条边上鲜花的个数都是偶数,无论Bob如何选择,都无法获胜,那么胜者只能是Alice。其他的情况,只要Alice拿掉一朵鲜花,Bob面对的情况就和刚刚说的一样,即Bob必胜

代码如下

class Solution {
public:
    long long flowerGame(int n, int m) {
        long long l=(n+1)/2,r=(m+1)/2;//求出左边的数的奇数个数和右边数的奇数个数
        return r*(n-l)+l*(m-r);//奇偶配对
    }
};

四、给定操作次数内使剩余元素的或值最小

又是一个位运算的题目,像这类的题目一般可以用拆位的方法来做,即一个个比特位的考虑。这题也是同理,我们可以从高位开始枚举一直枚举到低位,看看答案每个比特位是否能取到1。本质是在构造一个符合条件的最小值。

先来简单解释一下为什么是从高位向低位枚举,而不是从低位向高位枚举。这个可以看作是贪心的策略,本质是比特位的权重不同,举个例子 (1<<4) > (1<<4)-1 ,从二进制的角度看,第四位上的1,比后三位上的1 加起来还大。具体证明就不说了,如果想不明白,可以结合示例多想想。

如何判断比特位上的1能否去掉呢?

class Solution {
public:
    int minOrAfterOperations(vector<int>& nums, int k) {
        int ans=0,mask=0;
        for(int i=31;i>=0;i--){
            mask|=(1<<i);
            int cnt=0,flag=-1;
            for(auto x:nums){
                flag&=(x&mask);
                if(flag)
                    cnt++;
                else
                    flag=-1;
            }
            //这里需要说明一点:我们没有判断不能让flag=0的情况,是因为如果flag不能为0,那么cnt=n>k,题目数据范围限定了n>k,n=nums.size()
            if(cnt>k){
                ans|=(1<<i);
                mask^=(1<<i);
            }
        }
        return ans;
    }
};

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

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

相关文章

Linux下tar命令详解

tar #归档命令 格式 • Tar -参数 [args]..... 参数&#xff1a; 必选参数&#xff1a; 辅助参数&#xff1a; 额外参数&#xff1a; # 打包时排除某个文件 tar cf 文件名.tar --exclude路径/文件 路径 注&#xff1a;此处的路径前后需要保持保持一致&#xff0c;统一…

【Langchain+Streamlit】打造一个旅游问答AI

利用LangchainStreamlit打造一个交互简单的旅游问答AI机器人&#xff0c;如果你有openai账号,可以按照如下的网址直接体验&#xff0c;如果你没有的话可以站内私信博主要一下临时key体验一下&#xff1a; 产品使用传送门—— http://101.33.225.241:8501/ 这里有演示效果和代码…

AIGC专题:2024年生成式人工智能预测报告(英文版)

今天分享的是AIGC系列深度研究报告&#xff1a;《AIGC专题&#xff1a;2024年生成式人工智能预测报告&#xff08;英文版&#xff09;》。 &#xff08;报告出品方&#xff1a;CBINSIGHTS&#xff09; 报告共计&#xff1a;112页 我们没有足够的高质量数据来训练LLM 研究人员…

计算机视觉中的目标跟踪

从保护我们城市的监控系统到自动驾驶车辆在道路上行驶&#xff0c;目标跟踪已经成为计算机视觉中的一项基础技术。本文深入探讨了目标跟踪&#xff0c;探索了其基本原理、多样化的方法以及在现实世界中的应用。 什么是目标跟踪&#xff1f; 目标跟踪是深度学习在计算机视觉中广…

刷存在感,Excel转Protobuf/Json通用配置文件

使用场景 最近工作流中有将Excel转Protobuf作为配置文件的技术方案。具体实现是先定一个proto文件&#xff0c;再在一个对应excel表中定义对应字段&#xff0c;由策划在excel进行更改。proto文件可以生成对应语言的脚本&#xff0c;然后将excel转成对应protobuf的binary。 我…

SQLMap的Tamper脚本

由于SQL注入的影响过于广泛以及人们的网络安全意识普遍提升&#xff0c;网站往往 会针对SQL注入添加防SQL注入系统或者WAF 。这时&#xff0c;在渗透测试过程中就需要 绕过网站的安全防护系统。SQLMap是一款用来检测与利用SQL注入漏洞的免费 开源工具&#xff0c;不仅可以实现S…

Matomo 访问图形显示异常

近期我们的把 PHP 系统完全升级后&#xff0c;访问 Matomo 的站点有关访问的曲线无法显示。 出现的情况如下图&#xff1a; 我们可以看到图片中有关的访问曲线无法显示。 如果具体直接访问链接的话&#xff0c;会有下面的错误信息。 问题和解决 出现上面问题的原因是缺少 ph…

JavaScript 基础 - 第4天

函数 理解函数的封装特性&#xff0c;掌握函数的语法规则 声明和调用 函数可以把具有相同或相似逻辑的代码“包裹”起来&#xff0c;通过函数调用执行这些被“包裹”的代码逻辑&#xff0c;这么做的优势是有利于精简代码方便复用。 声明&#xff08;定义&#xff09; 声明&a…

互联网加竞赛 基于深度学习的植物识别算法 - cnn opencv python

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 MobileNetV2网络4 损失函数softmax 交叉熵4.1 softmax函数4.2 交叉熵损失函数 5 优化器SGD6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习的植物识别算法 ** …

Qt 的安装以及项目的创建

目录 Qt简介Qt 开发环境安装的过程环境变量的配置Qt SDK 中的重要的工具创建一个 Qt 项目 Qt简介 开始安装教程前&#xff0c;首先来了解一下什么是QT。 QT&#xff08;Quick Thought&#xff09;是一个基于Qt库的快速应用程序开发框架。它提供了一套完整的开发工具和库&…

apipost 简单的性能压测总结

1、简单的使用机型牌评估 1&#xff09;jdk默认256M给100用&#xff0c;推荐给1000人同时用JVM 堆栈建议2G~4G&#xff08;目前定了机型4核8G内存 2T磁盘做radio0存储&#xff09;&#xff1b; 2&#xff09;数据库配置文件写了占了2G内存&#xff08;my.cnf文件&#xff09…

记录Git无法连接Github(443报错)的一种可能——代理问题

参考文章&#xff1a; Git安装配置与使用&#xff08;超级详细&#xff09;_git配置-CSDN博客 github代理报错_valueerror: unable to determine socks version from-CSDN博客 速通 如果在使用 git 时遇到了这样的报错&#xff1a; OpenSSL SSL_connect: SSL_ERROR_SYSCAL…

思科交换机调试流程介绍(主要适用于OEM的思科的浪潮FS6700)

文章目录 1、光纤交换机配置流程2、交换机初始化 2-1、 默认管理地址 2-2、 更改默认管理地址 2-3、 远程登录模式 2-4、 更改用户名 3、VSAN 3-1、什么是VSAN 3-2、关于 VSAN 的一些主意事项 3-3、配置VSAN 3-4、配置验证…

龙龙送外卖pta[代码+讲解]

题目 题解 代码 题目 龙龙是“饱了呀”外卖软件的注册骑手&#xff0c;负责送帕特小区的外卖。帕特小区的构造非常特别&#xff0c;都是双向道路且没有构成环 —— 你可以简单地认为小区的路构成了一棵树&#xff0c;根结点是外卖站&#xff0c;树上的结点就是要送餐的地址…

网工每日一练(2月4日)

试题1 通过HFC网络实现宽带接入&#xff0c;用户端需要的设备是&#xff08;A&#xff09;&#xff0c;局端用于控制和管理用户的设备是&#xff08;D&#xff09;。 &#xff08;1&#xff09;A.Cable Modem B.ADSL Modem C.OLT D.CMTS &#xff08;2&#xff09;A. Cable Mo…

Node.js的安装

目录 1 下载安装包 2 安装 3 以管理员身份打开命令提示符窗口 4 验证Node.js的环境变量 5 配置npm的全局安装路径 6 更换源 1 下载安装包 在浏览器中打开链接&#xff0c;即可看到如下页面&#xff0c;点击即可下载安装包 2 安装 除了下面这一步&#xff0c;其它无脑Nex…

docker安装nacos

nacos v2.3.0 docker run --name nacos -e MODEstandalone -p 8848:8848 -p 9848:9848 -d nacos/nacos-server:2.3.0访问&#xff1a;http://192.168.2.209:8848/nacos

24.云原生ArgoCD高级之钩子

云原生专栏大纲 文章目录 Argo CD钩子如何定义钩子钩子删除策略 Argo CD钩子 Argo CD 是一个用于部署和管理 Kubernetes 应用程序的工具&#xff0c;它提供了一种声明式的方式来定义和自动化应用程序的部署过程。Argo CD 钩子&#xff08;Hooks&#xff09;是一种机制&#x…

TQ15EG开发板教程:开发板Vivado硬件设置

1&#xff0c;串口的配置 PS端有2个串口,在BANK500, 1.8V IO电平 管脚名称 电平 说明 UART0 RX MIO18 1.8V MPSOC方向看 TX MIO19 1.8V UART1 RX MIO21 1.8V TX MIO20 1.8V 2&#xff0c;QSPI的配置 采用2片MT25QU256 拼接成8bit的QSPI存储系统。采用1.8V…

OceanBase 4.2.2 GA 发布,全新特性快速预览!

在 2023 年度发布会上&#xff0c;OceanBase 沿着“一体化”产品战略思路&#xff0c;发布了一体化数据库的首个长期支持版本 4.2.1 LTS。作为 4.0 系列的首个 LTS 版本&#xff0c;该版本的定位是支撑客户关键业务稳定长久运行&#xff0c;我们非常认真的打磨了这个版本&#…