Leetcode---372周赛

news2024/12/23 0:07:36

题目列表

2937. 使三个字符串相等

2938. 区分黑球与白球

2939. 最大异或乘积

2940. 找到 Alice 和 Bob 可以相遇的建筑

一、使三个字符串相等

这题把题目意思读懂,正常模拟就行,简单来说就是看三个字符串的最长公共前缀有多长,

代码如下

class Solution {
public:
    int findMinimumOperations(string s1, string s2, string s3) {
        int n1=s1.size(),n2=s2.size(),n3=s3.size();
        int mn=min(n1,min(n2,n3));
        int i;
        for(i=0;i<mn;i++){
            if(s1[i]!=s2[i]||s1[i]!=s3[i]||s2[i]!=s3[i])
                break;
        }
        if(i==0) return -1;
        else return n1+n2+n3-3*i;
    }
};

二、区分黑球和白球

这题其实可以根据所给的示例,手玩一下,你就会发现最短的步数就是将黑球按照顺序从左往右依次排好需要的步数,

可能有人不太理解,我简单解释一下:假设有两个黑球分别在下标x、y (x<y)【下面用下标代替黑球】,按照我们的思路,把x放到0,y放到1,共有x-0+y-1步,如果我们把y放到0,x放到1,则会有y-0+(x+1-1)  【因为x在y前面,要想将y放到0,则x会被迫往后移动一位,所以需要多往前走一步】,其他情况同理,所以按照原本的顺序排列黑球的步数最少

代码如下

class Solution {
public:
    long long minimumSteps(string s) {
        long long ans=0;
        for(int i=0,j=0;i<s.size();i++){//j表示下一个黑球应该在的位置
            if(s[i]=='0'){
                ans+=i-j;//黑球移到对应位置需要的步数
                j++;
            }
        }
        return ans;
    }
};

三、最大异或乘积

这题跟位运算有关系,异或运算,相同为0,相异为1,思路如下

代码如下 

//法1:时间复杂度O(n)
class Solution {
public:
    const int MOD=1e9+7;
    int maximumXorProduct(long long a, long long b, int n) {
        long long ax=(a>>n)<<n,bx=(b>>n)<<n;
        for(int i=n-1;i>=0;i--){
            if(((a>>i)&1) == ((b>>i)&1)){//说明a和b的比特位相等
                ax^=(1LL<<i);
                bx^=(1LL<<i);
            }else if(ax>bx){//说明a和b的比特位不相等,且ax>bx
                bx^=(1LL<<i);
            }else{
                ax^=(1LL<<i);
            }
        }
        return (ax%MOD)*(bx%MOD)%MOD;
    }
};

//法2:时间复杂度O(1)
class Solution {
public:
    const int MOD=1e9+7;
    int maximumXorProduct(long long a, long long b, int n) {
        if(a<b) swap(a,b);
        long long mask=(1LL<<n)-1;
        long long ax=a&(~mask),bx=b&(~mask);
        long long diff=(a^b)&mask;//diff二进制为1表示可以分配给a或b的1
        long long one=diff^mask;//将diff中的二进制为0的位置变成1
        ax|=one;
        bx|=one;
        if(diff>0&&ax==bx){
            long long high_bit=1LL<<(63-__builtin_clzll(diff));
            ax|=high_bit;
            diff^=high_bit;
        }
        bx|=diff;
        return (ax % MOD) * (bx % MOD) % MOD;
    }
};

四、找到Alice和Bob可以相遇的建筑

这个题目的题意就是要求我们找每次查询的两个位置(L,R)的右边有没有比他们都高的建筑,当然如果height[R]>height[L],那么直接返回R即可,如果L==R,直接返回当前位置,所以我们只要求当height[L]>height[R]时,右边高于heighs[L]的位置即可

class Solution {
public:
    vector<int> leftmostBuildingQueries(vector<int>& heights, vector<vector<int>>& queries) {
        int n=heights.size(),m=queries.size();
        vector<int>ans(m,-1);
        vector<vector<pair<int,int>>>left(n);//等待被查询的位置
        for(int i=0;i<m;i++){
            int l=queries[i][0],r=queries[i][1];
            if(l>r) swap(l,r);
            if(l==r||heights[r]>heights[l]){
                ans[i]=r;
                continue;
            }
            left[r].push_back({-heights[l],i});
        }

        priority_queue<pair<int,int>>q;
        for(int i=0;i<n;i++){
            while(q.size()&&-q.top().first<heights[i]){
                ans[q.top().second]=i;
                q.pop();
            }
            for(auto e:left[i]){
                q.push(e);
            }
        }
        return ans;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis Cluster主从模式详解

在软件的架构中&#xff0c;主从模式&#xff08;Master-Slave&#xff09;是使用较多的一种架构。主&#xff08;Master&#xff09;和从&#xff08;Slave&#xff09;分别部署在不同的服务器上&#xff0c;当主节点服务器写入数据时&#xff0c;同时也会将数据同步至从节点服…

【计算机网络笔记】数据链路层——差错编码

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

亚马逊云科技re:Invent大会:云计算与生成式AI共筑科技新局面,携手构建未来

随着科技的飞速发展&#xff0c;云计算和生成式 AI 已经成为了推动科技进步的重要力量。这两者相互结合&#xff0c;正在为我们创造一个全新的科技局面。 亚马逊云科技的re:Invent大会再次证明了云计算和生成式AI的强大结合正在塑造科技的新未来。这次大会聚焦了云计算的前沿技…

通过ros系统中websocket中发送sensor_msgs::Image数据给web端显示(二)

通过ros系统中websocket中发送sensor_msgs::Image数据给web端显示(二) mp4媒体流数据 #include <ros/ros.h> #include <signal.h> #include <sensor_msgs/Image.h> #include <message_filters/subscriber.h> #include <message_filters/synchroniz…

DNS 区域传输 (AXFR)

漏洞描述 docker环境搭建 使用 AXFR 协议的 DNS 区域传输是跨 DNS 服务器复制 DNS 记录的最简单机制。为了避免在多个 DNS 服务器上编辑信息&#xff0c;可以在一台服务器上编辑信息&#xff0c;并使用 AXFR 将信息复制到其他服务器。但是&#xff0c;如果您不保护您的服务器&…

图论——最小割问题

Capacity&#xff08;S&#xff0c;T) Min-Cut(通俗的说就是用最小的力气隔断&#xff09; 最小割并不唯一 最大流最小割定理 对于一个网络流问题&#xff0c;最大流的流量最小割的容量 寻找最小割 可以使用Edmonds-karp or Dinic algorithm 首先寻找任意一个最大流&#xff…

浏览器是什么

浏览器是什么 本文简要介绍浏览器的功能和组成。 浏览器&#xff08;Web Browser&#xff09;是一种用于访问和浏览互联网上的网页和资源的软件应用程序。它是用户与互联网交互的主要工具之一。 浏览器通过使用网络协议&#xff08;如HTTP、HTTPS等&#xff09;与远程服务器通…

杰发科技AC7801——ADC软件触发的简单使用

前言 7801资料读起来不是很好理解&#xff0c;大概率是之前MTK的大佬写的。在此以简单的方式进行描述。我们做一个简单的规则组软件触发Demo。因为规则组通道只有一个数据寄存器&#xff0c;因此还需要用上DMA方式搬运数据到内存。 AC7801的ADC简介 7801的ADC是一种 12 位 逐…

LeetCode Hot100 108.将有序数组转为二叉搜索树

题目&#xff1a; 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 方法&#xff1a; class Solution {public…

两个数组的交集(C++实现)

两个数组的交集 题目思路代码代码讲解总结和意义交集和差集思路意义 题目 思路 利用set容器的特性对输入的两个整数向量进行排序和去重操作&#xff0c;然后使用两个迭代器在有序的两个set容器中进行遍历&#xff0c;找出两个向量的交集&#xff0c;并将交集元素存储在结果向量…

CSS:浏览器设置placeholder样式 / 微信小程序设置placeholder样式

一、web 设置placeholder 设置浏览器的placeholder样式 ::-webkit-input-placeholder { /* WebKit browsers */color: #999; } :-moz-placeholder { /* Mozilla Firefox 4 to 18 */color: #999; } ::-moz-placeholder { /* Mozilla Firefox 19 */color: #999; } :-ms-input-p…

JavaScript编程基础 – 对象

JavaScript编程基础 – 对象 JavaScript Programming Essentials – Object 本文简要介绍JavaScript面向对象编程&#xff0c;如何实现其中的对象以及实例演示&#xff0c;希望对大家学习JavaScript有所帮助。 1. 面向对象编程特点 面向对象编程(Object-Oriented Programmi…

万字长文 - Python 日志记录器logging 百科全书 - 高级配置之 日志文件配置

万字长文 - Python 日志记录器logging 百科全书 - 高级配置之 日志文件配置 前言 在 Python 的logging模块中&#xff0c;它不仅提供了基础的日志功能&#xff0c;还拥有一系列高级配置选项来满足复杂应用的日志管理需求。 说到logging 模块的高级配置&#xff0c;必须提及日…

STM32_7(ADC)

一、ADC ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁12位逐次逼近型ADC&#xff0c;1us转换时间输入电压范围&#xff1a;0~3.3V&#xff0c;…

命名空间、字符串、布尔类型、nullptr、类型推导

面向过程语言&#xff1a;C ——> 重视求解过程 面向对象语言&#xff1a;C ——> 重视求解的方法 面向对象的三大特征&#xff1a;封装、继承和多态 C 和 C 在语法上的区别 1、命名空间&#xff08;用于解决命名冲突问题&#xff09; 2、函数重载和运算符重载&#xf…

C语言进阶之路-基本数据小怪篇

目录 一、学习目标&#xff1a; 二、数据基本类型 整型 浮点型 / 实型 字符 字符串 布尔型数据 三、重要的杂七杂八知识点 常量与变量 标准输入 sizeof运算符&#xff1a; 类型转换 数据类型的本质 整型数据尺寸 可移植性整型 拿下第一个C语言程序 总结 一、学…

MySQL数据库主从集群搭建

快捷查看指令 ctrlf 进行搜索会直接定位到需要的知识点和命令讲解&#xff08;如有不正确的地方欢迎各位小伙伴在评论区提意见&#xff0c;博主会及时修改&#xff09; MySQL数据库主从集群搭建 主从复制&#xff0c;是用来建立一个和主数据库完全一样的数据库环境&#xff0c…

win10安装pytorch(py39)

cuda≤11.6&#xff0c;观察控制面板 观察torch对应cuda版本 https://download.pytorch.org/whl/torch/ 安装cuda11.6.0 CUDA Toolkit Archive | NVIDIA Developer cmd输入nvcc -V 编辑国内镜像源 .condarc anaconda prompt输入 查看环境 conda env list 安装py3.9…

LedControl 库说明文档

LedControl 库最初是为基于 8 位 AVR 处理器的 Arduino 板编写的。但由于该代码不使用处理器的任何复杂的内部功能&#xff0c;因此具有高度可移植性&#xff0c;并且应该在任何支持 和 功能的 Arduino&#xff08;类似&#xff09;板上pinMode()运行digitalWrite() 。 单个 M…

中电金信:守【政】创新,探路保险数字化转型“新范式”

11月23日&#xff0c;CIIP2023中国保险科技创新合作大会在京举办。大会汇集保险科技领域行业专家、学者、国内外头部险企及保险科技公司负责人等各界人士&#xff0c;立足保险行业高质量发展和创新驱动理念&#xff0c;寻找行业数字化转型新动能、新视角&#xff0c;为保险科技…