第 372 场 LeetCode 周赛题解

A 使三个字符串相等

在这里插入图片描述

求三个串的最长公共前缀

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

B 区分黑球与白球

在这里插入图片描述

双指针:一个指针 i i i 遍历字符串,一个指针 j j j 指向下一个 0 0 0 应该移动到位置, i i i 指向 0 0 0 时更新答案同时 j + 1 j+1 j+1

class Solution {
public:
    long long minimumSteps(string s) {
        long long res = 0;
        for (int j = 0, i = 0; i < s.size(); i++)
            if (s[i] == '0') {
                res += i - j;
                j++;
            }
        return res;
    }
};

C 最大异或乘积

在这里插入图片描述

贪心:从高到低枚举二进制每一位 i ∈ [ 0 , n ) i\in [0,n) i[0,n),有两种情况:
1) a a a b b b 这一位相同,则存在 x x x 使得 a ∧ x a\wedge x ax b ∧ x b\wedge x bx 这一位都为 1 1 1 ;
2) a a a b b b 这一位不同,则 a ∧ x a\wedge x ax b ∧ x b\wedge x bx 中只有一个数这一位为 1 1 1 ,若当前 a ∧ x a\wedge x ax 不考虑这一位的数大于 b ∧ x b\wedge x bx 不考虑这一位的数时,这一位 1 1 1 应该给 b ∧ x b\wedge x bx ,否则给 a ∧ x a\wedge x ax

class Solution {
public:
    using ll = long long;

    int maximumXorProduct(long long a, long long b, int n) {
        ll mod = 1e9 + 7;
        ll na = a, nb = b;
        for (ll i = n - 1; i >= 0; i--)
            if ((na >> i & 1LL) == (nb >> i & 1LL)) {
                na |= 1LL << i;
                nb |= 1LL << i;
            } else {
                if ((na & (~(1LL << i))) > (nb & (~(1LL << i)))) {
                    nb |= 1LL << i;
                    na &= ~(1LL << i);
                } else {
                    na |= 1LL << i;
                    nb &= ~(1LL << i);
                }
            }
        return (na % mod * (nb % mod) % mod + mod) % mod;
    }
};

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

在这里插入图片描述

二分+线段树:对于一个查询 [ a , b ] [a,b] [a,b] ( a ≤ b ) (a\le b) (ab) , 有三种情况:
1) a = = b a==b a==b,答案为 a a a
2) a ≠ b a\ne b a=b ,且 h e i g h t s [ a ] < h e i g h t s [ b ] heights[a] < heights[b] heights[a]<heights[b] ,答案为 b b b
3) a ≠ b a\ne b a=b ,且 h e i g h t s [ a ] ≥ h e i g h t s [ b ] heights[a] \ge heights[b] heights[a]heights[b],答案为满足 m a x { h e i g h t s [ k ]    ∣    k ∈ [ b + 1 , i ] }    > h e i g h t s [ a ] max\{heights[k]\;|\; k \in [b+1,i] \}\; >heights[a] max{heights[k]k[b+1,i]}>heights[a] 的最小的 i i i ,通过线段树来维护区间最大值,然后通过二分求 i i i

class SegmentTree {
public:
    typedef long long ll;

    inline void push_down(ll index) {
        st[index << 1].lazy = 1;
        st[index << 1 | 1].lazy = 1;
        st[index << 1].mark = max(st[index << 1].mark, st[index].mark);
        st[index << 1 | 1].mark = max(st[index << 1 | 1].mark, st[index].mark);
        st[index << 1].s = max(st[index << 1].s, st[index].mark);
        st[index << 1 | 1].s = max(st[index << 1 | 1].s, st[index].mark);
        st[index].lazy = 0;
    }

    inline void push_up(ll index) {
        st[index].s = max(st[index << 1].s, st[index << 1 | 1].s);
    }

    SegmentTree(vector<int> &init_list) {
        st = vector<SegmentTreeNode>(init_list.size() * 4 + 10);
        build(init_list, 1, init_list.size());
    }

    void build(vector<int> &init_list, ll l, ll r, ll index = 1) {
        st[index].tl = l;
        st[index].tr = r;
        st[index].lazy = 0;
        st[index].mark = 0;
        if (l == r) {
            st[index].s = init_list[l - 1];
        } else {
            ll mid = (l + r) >> 1;
            build(init_list, l, mid, index << 1);
            build(init_list, mid + 1, r, index << 1 | 1);
            push_up(index);
        }
    }

    ll query(ll l, ll r, ll index = 1) {
        if (l <= st[index].tl and st[index].tr <= r) {
            return st[index].s;
        } else {
            if (st[index].lazy)
                push_down(index);
            if (r <= st[index << 1].tr)
                return query(l, r, index << 1);
            else if (l > st[index << 1].tr)
                return query(l, r, index << 1 | 1);
            return max(query(l, r, index << 1), query(l, r, index << 1 | 1));
        }
    }

private:
    struct SegmentTreeNode {
        ll tl;
        ll tr;
        ll s;
        ll mark;
        int lazy;
    };
    vector<SegmentTreeNode> st;
};


class Solution {
public:
    vector<int> leftmostBuildingQueries(vector<int> &heights, vector<vector<int>> &queries) {
        int n = heights.size();
        SegmentTree stree(heights);
        vector<int> res;
        res.reserve(queries.size());
        for (auto &qi: queries) {
            int a = min(qi[0], qi[1]), b = max(qi[0], qi[1]);
            if (a == b)
                res.push_back(a);
            else if (heights[a] < heights[b])
                res.push_back(b);
            else {//ha>hb
                int l = b + 1, r = n;
                while (l < r) {
                    int mid = (l + r) / 2;
                    if (stree.query(b + 1 + 1, mid + 1) > heights[a])
                        r = mid;
                    else
                        l = mid + 1;
                }
                if (l < n)
                    res.push_back(l);
                else
                    res.push_back(-1);
            }
        }
        return res;
    }
};

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

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

相关文章

系列十、你说你做过JVM调优和参数配置,请问如何盘点JVM系统的默认值?

一、JVM的参数类型 1.1、标配参数 java -versionjava -help 1.2、XX参数 1.2.1、Boolean类型 公式&#xff1a;-XX:或者- 某个属性值 表示开启、-表示关闭 # 是否打印GC收集细节 -XX:PrintGCDetails -XX:-PrintGCDetails# 是否使用串行垃圾收集器 -XX:UseSerialGC -XX:-UseS…

Java Web——Web开发介绍

什么是Web开发 Web开发是一种创建和维护全球广域网&#xff08;World Wide Web&#xff09;上的网站和应用的技术。全球广域网也称为万维网(www World Wide Web)&#xff0c;是一个能够通过浏览器访问的互联网上的巨大信息库。 Web开发的目标是创建功能齐全、易于使用和安全的…

C++多线程编程(2):四种线程管理方法

文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 文章目录 线程管理get_idsleep_forsleep_untilyield 线程管理 有一个this_thread的名称空间中定义了许多的线程管理方法&#xff1a; get_id&#xff1a;获取当前线程idsleep_for&#xff1a;当前线程休眠一段时间sleep_…

开源更安全? yum源配置/rpm 什么是SSH?

文章目录 1.开放源码有利于系统安全2.yum源配置&#xff0c;这一篇就够了&#xff01;(包括本地&#xff0c;网络&#xff0c;本地共享yum源)3.rpm包是什么4.SSH是什么意思&#xff1f;有什么功能&#xff1f; 1.开放源码有利于系统安全 开放源码有利于系统安全 2.yum源配置…

数据挖掘复盘——apriori

read_csv函数返回的数据类型是Dataframe类型 对于Dataframe类型使用条件表达式 dfdf.loc[df.loc[:,0]2]df: 这是一个DataFrame对象的变量名&#xff0c;表示一个二维的表格型数据结构&#xff0c;类似于电子表格或SQL表。 df.loc[:, 0]: 这是使用DataFrame的.loc属性来进行…

Java调用com组件之jacob

一、背景介绍 现有标准的 win32 com组件&#xff0c;有如下的参数&#xff1a; 属性 值 说明Program IDyinhai.yh_hb_sctrCOM ClassIDCOM ClassName COClass_yh_hb_sctr Interface TypeDual InterfaceInterface NameIyh_hb_sctr 具有一个方法&#xff1a; yh_hb_call( string…

6个系统设计的基本概念

1*Xl9kK7ffgu18IaJ637-cTg.png 简介 这份综合指南将引导你掌握在系统设计中取得成功所需的基本概念。 垂直和水平扩展 1. 垂直扩展 系统扩展的最直接方式是通过垂直扩展。这涉及升级现有服务器&#xff0c;例如增加更多的RAM或更快的CPU。 1*8OAEF45gAfOxvrTUz6hp3w.png 垂直扩…

《向量数据库指南》——亚马逊云科技向量数据库揭秘:点亮数据未来!

在我们讨论亚马逊云科技向量数据库之前,我们必须先搞懂向量数据库。 那么,向量数据库是什么呢?简单来说,向量数据库就是一种专门用于处理和查询向量数据的数据库。与传统数据库以表格形式组织和存储数据不同,向量数据库采用多维数值数组的形式处理和存储数据。它的主要目标…

从多表连接视图对比人大金仓和Oracle

KING BASE 信息时代&#xff0c;数据是驱动业务决策和创新的核心资源。然而&#xff0c;随着数据量的不断增加&#xff0c;有效地处理和整合数据的过程变得愈发复杂。这时&#xff0c;多表连接视图悄然走进数据库世界&#xff0c;不仅能够将多个表中的数据整合在一起&#xff0…

和解电话(匿名电话)/情侣拉黑联系电话/虚拟号/虚拟中间号/拉黑联系项目代码

和解电话&#xff0c;又名匿名电话 使用中间号转接到被叫人&#xff0c;不显示呼叫人号码&#xff0c;类似美团隐私号 呼叫人A->中间号B->被叫人C 演示地址&#xff1a;微信打开(http://sms.test.4php.top/sms/phone) 实现代码如下 <section class"section&q…

Java工具包Hutool框架

Hutool是一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML 等 JDK 方法进行封装,组成各种 Util 工具类。官网地址:https://www.hutool.cn/。 添加依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artif…

【具身智能评估2】具身视觉语言规划(EVLP)数据集基准汇总

参考论文&#xff1a;Core Challenges in Embodied Vision-Language Planning 论文作者&#xff1a;Jonathan Francis, Nariaki Kitamura, Felix Labelle, Xiaopeng Lu, Ingrid Navarro, Jean Oh 论文原文&#xff1a;https://arxiv.org/abs/2106.13948 论文出处&#xff1a;Jo…

WIFI版本云音响设置教程腾讯云平台版本

文章目录 WIFI版本云音响设置教程腾讯云平台版本一、申请设备三元素1.腾讯云物联网平台2.创建产品3.设置产品参数4.添加设备5.获取三元素 二、设置设备三元素1.打开MQTTConfigTools2.计算MQTT参数3.使用windows电脑的WIFI连接到设备热点4.设置参数 三、腾讯云物联网套件协议使用…

基于鼠群算法优化概率神经网络PNN的分类预测 - 附代码

基于鼠群算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于鼠群算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于鼠群优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

简历技术栈redis点

熟悉Redis常见的数据类型以及缓存问题&#xff0c;如缓存穿透、雪崩 、击穿等 Redis五种数据类型 Redis常用命令 查看所有 keys * 字符串类型string 常用命令 举例&#xff1a; 放置一个字符串数据到redis中&#xff0c;先为数据定义一个名称&#xff0c;比如name,age等&am…

线性方程组

线性方程组 设存在线性方程组 { a 1 , 1 x 1 a 1 , 2 x 2 ⋯ a 1 , n x n b 1 a 2 , 1 x 1 a 2 , 2 x 2 ⋯ a 2 , n x n b 2 ⋮ ⋮ a m , 1 x 1 a m , 2 x 2 ⋯ a m , n x n b m \left.\left\{\begin{array}{l}a_{1,1}x_1a_{1,2}x_2\cdotsa_{1,n}x_nb_1\\a_{2,1}…

大模型的语言能力

NLP作为一个领域为基础模型开辟了道路。虽然这些模型在标准基准测试中占据主导地位&#xff0c;但这些模型目前获得的能力与那些将语言描述为人类交流和思维的复杂系统的能力之间存在明显的差距。针对这一点&#xff0c;我们强调语言变异的全部范围&#xff08;例如&#xff0c…

大模型的视觉能力

摘要&#xff1a; 计算机视觉引领了人工智能中深度学习的采用&#xff0c;这表明在大型注释数据集上预训练的模型可以转移到许多下游设置。现在&#xff0c;在网络规模的原始数据而不是策划的数据集上进行预训练&#xff0c;基础大模型在计算机视觉中正在崛起。这些模型…

Windows安装多个版本的Java

在做持续集成CI/CD时&#xff0c;需要用到Jenkins&#xff0c;本人爱好使用各种最新版&#xff0c;down下来之后发现&#xff0c;新版只支持Java11以上的版本了&#xff01;&#xff01; 苦苦找了很久&#xff0c;找不到正规Java8版本的Jenkins安装包&#xff01; 干脆换个思路…

盘点54个Python实用工具源码Python爱好者不容错过

盘点54个Python实用工具源码Python爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 链接&#xff1a;https://pan.baidu.com/s/1OXyEh-Yy3JI90jvn6d6wRw?pwd8888 提取码&#xff1a;8888 项目名称 7z辅助破解工…