Leetcode 第 140 场双周赛题解

news2024/11/29 0:51:35

Leetcode 第 140 场双周赛题解

  • Leetcode 第 140 场双周赛题解
    • 题目1:3300. 替换为数位和以后的最小元素
      • 思路
      • 代码
      • 复杂度分析
    • 题目2:3301. 高度互不相同的最大塔高和
      • 思路
      • 代码
      • 复杂度分析
    • 题目3:3302. 字典序最小的合法序列
      • 思路
      • 代码
      • 复杂度分析
    • 题目4:3303. 第一个几乎相等子字符串的下标
      • 思路
      • 代码
      • 复杂度分析

Leetcode 第 140 场双周赛题解

题目1:3300. 替换为数位和以后的最小元素

思路

遍历,维护数位之和的最小值。

代码

class Solution {
public:
    int minElement(vector<int>& nums) {
        int minElem = INT_MAX;
        for (int &num : nums)
            minElem = min(minElem, digitSum(num));
        return minElem;
    }
    // 辅函数 - 求数位之和
    int digitSum(int x)
    {
        int sum = 0;
        while (x) {
            sum += x % 10;
            x /= 10;
        }
        return sum;
    }
};

复杂度分析

时间复杂度:O(nlogU),其中 n 是数组 nums 的长度,U=max(nums)。

空间复杂度:O(1)。

题目2:3301. 高度互不相同的最大塔高和

思路

将数组 maximumHeight 从大到小排序。

使用一个变量 mx 表示当前能用的最大高度,初始化为 maximumHeight[0]。

遍历数组 maximumHeight,如果 maximumHeight[i] >= mx,基于贪心的思想,maximumHeight[i] 最多保留到 mx - 1,更新 mx = maximumHeight[i]。

因为题目要求 maximumHeight[i] 要是一个正整数,所以如果 mx <= 0,可以提前得知没有合法的设置,返回 -1。

代码

/*
 * @lc app=leetcode.cn id=3301 lang=cpp
 *
 * [3301] 高度互不相同的最大塔高和
 */

// @lc code=start
class Solution
{
public:
    long long maximumTotalSum(vector<int> &maximumHeight)
    {
        sort(maximumHeight.begin(), maximumHeight.end(), greater<>());
        int mx = maximumHeight[0];
        for (int i = 1; i < maximumHeight.size(); i++)
        {
            if (maximumHeight[i] >= mx)
                maximumHeight[i] = mx - 1;
            mx = maximumHeight[i];
            if (mx <= 0)
                return -1;
        }
        return accumulate(maximumHeight.begin(), maximumHeight.end(), 0LL);
    }
};
// @lc code=end

复杂度分析

时间复杂度:O(n),其中 n 是数组 maximumHeight 的长度。

空间复杂度:O(1)。

题目3:3302. 字典序最小的合法序列

思路

题解:https://leetcode.cn/problems/find-the-lexicographically-smallest-valid-sequence/solutions/2934051/qian-hou-zhui-fen-jie-zi-xu-lie-pi-pei-t-le8d/

代码

/*
 * @lc app=leetcode.cn id=3302 lang=cpp
 *
 * [3302] 字典序最小的合法序列
 */

// @lc code=start
class Solution
{
public:
    vector<int> validSequence(string word1, string word2)
    {
        int n = word1.length(), m = word2.length();
        vector<int> suf(n + 1);
        suf[n] = m;
        for (int i = n - 1, j = m - 1; i >= 0; i--)
        {
            if (j >= 0 && word1[i] == word2[j])
                j--;
            suf[i] = j + 1;
        }

        vector<int> ans(m);
        bool changed = false; // 是否修改过
        for (int i = 0, j = 0; i < n; i++)
        {
            if (word1[i] == word2[j] || !changed && suf[i + 1] <= j + 1)
            {
                if (word1[i] != word2[j])
                    changed = true;
                ans[j++] = i;
                if (j == m)
                    return ans;
            }
        }
        return {};
    }
};
// @lc code=end

复杂度分析

时间复杂度:O(n),其中 n 是 word1 的长度。

空间复杂度:O(n),其中 n 是 word1 的长度。

题目4:3303. 第一个几乎相等子字符串的下标

思路

现在变成了两个问题:

第一个问题:对于每个从 s[i] 开始的字符串 s[i…],计算它能匹配 pattern 多长的前缀。
第二个问题:对于每个以 s[j] 结尾的字符串 s[…j],计算它能匹配 pattern 多长的后缀。

在这里插入图片描述

代码

/*
 * @lc app=leetcode.cn id=3303 lang=cpp
 *
 * [3303] 第一个几乎相等子字符串的下标
 */

// @lc code=start
class Solution
{
public:
    int minStartingIndex(string s, string pattern)
    {
        int n = s.length(), m = pattern.length();
        string rev_s = string(s.rbegin(), s.rend());
        string rev_pattern = string(pattern.rbegin(), pattern.rend());
        vector<int> preZ = getZ(pattern + s);
        vector<int> sufZ = getZ(rev_pattern + rev_s);
        reverse(sufZ.begin(), sufZ.end());
        for (int i = 0; i <= n - m; i++)
            if (preZ[i + m] + sufZ[i + m - 1] >= m - 1)
                return i;
        return -1;
    }
    // 辅函数
    vector<int> getZ(string s)
    {
        int n = s.length();
        vector<int> z(n);
        int box_l = 0, box_r = 0; // z-box 左右边界
        for (int i = 1; i < n; i++)
        {
            if (i <= box_r)
                z[i] = min(z[i - box_l], box_r - i + 1);
            while (i + z[i] < n && s[z[i]] == s[i + z[i]])
            {
                box_l = i;
                box_r = i + z[i];
                z[i]++;
            }
        }
        return z;
    }
};
// @lc code=end

复杂度分析

时间复杂度:O(n+m),其中 n 是字符串 s 的长度,m 是字符串 pattern 的长度。

空间复杂度:O(n+m),其中 n 是字符串 s 的长度,m 是字符串 pattern 的长度。

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

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

相关文章

入手一个小扒菜fqrr#com

fqrr#com 既带q又带r是很多人不喜的类型&#xff0c; 父亲 夫妻 番茄 分期 人人 日日 好无聊的米呀&#xff0c;竟然组合不出来意思 这个不是购买的&#xff0c;别人说他1150元购买的&#xff0c;算是半抵给我的吧 其实我也不喜欢&#xff0c;我4声母.com 已经够多了&am…

【教程】文字转语音的3个方法,文字转语音使用攻略

文字转语音的需求还是蛮多的&#xff0c;很多用户在视频剪辑中会遇到。不想用本人的声音&#xff0c;那么视频中的旁白就只能通过文字转语音软件实现了。 想要将文字转为语音那还是蛮好解决的&#xff0c;如果你还在找方法&#xff0c;那么以下内容可以了解下。本文整理了三种简…

2c 操作符详解

1. 操作符分类&#xff1a; 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员 2. 算术操作符 - * / % 1除了 % 操作符之外&#xff0c;其他的几个操作符可以作用于整数和浮点数。对于 / 操作…

NVIDIA NVLink-C2C

NVIDIA NVLink-C2C 文章目录 前言一、介绍1. 用于定制芯片集成的超快芯片互连技术2. 构建半定制芯片设计3. 使用 NVLink-C2C 技术的产品 二、NVLink-C2C 技术优势1. 高带宽2. 低延迟3. 低功率和高密度4. 行业标准协议 前言 将 NVLink 扩展至芯片级集成 一、介绍 1. 用于定制芯…

Candance仿真二阶米勒补偿OTA

1.OTA电路搭建目标——25Mhz GBW&#xff0c;65dB的增益 2.电路参照 3.candance电路搭建 实现步骤&#xff1a;应该是从下面这个公式开始推导 然后那个CL就是两边的那个CCa或CCb的大小 算出来就是gm75us

MongoDB-aggregate流式计算:带条件的关联查询使用案例分析

在数据库的查询中&#xff0c;是一定会遇到表关联查询的。当两张大表关联时&#xff0c;时常会遇到性能和资源问题。这篇文章就是用一个例子来分享MongoDB带条件的关联查询发挥的作用。 假设工作环境中有两张MongoDB集合&#xff1a;SC_DATA&#xff08;学生基本信息集合&…

基于微信小程序的旅游拼团系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

Colorize: 0 variables Colorize is not activated for this file. VsCode

问题情况 解决步骤 1.找到setting.json文件 2.输入以下代码&#xff0c;保存setting.json文件 "colorize.languages": ["css", "javascript", "sass", "less", "postcss", "stylus", "xml"…

基于SpringBoot+Vue+MySQL的中医院问诊系统

系统展示 用户前台界面 管理员后台界面 医生后台界面 系统背景 随着信息技术的迅猛发展和医疗服务需求的不断增加&#xff0c;传统的中医院问诊流程已经无法满足患者和医院的需求。纸质病历不仅占用大量存储空间&#xff0c;而且容易丢失和损坏&#xff0c;同时难以实现信息的快…

螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习04(环境准备)

4 创建docker容器 4.1创建网络 [rootlocalhost wutool]# docker network create -d macvlan --subnet192.168.137.0/24 --gateway192.168.137.2 --ip-range192.168.137.0/24 -o parentens33 nat 52af11381bfd655d175e4168265b2a507793e8fe48f119db846949ffd4dd27de [rootlocal…

【每天学个新注解】Day 15 Lombok注解简解(十四)—@UtilityClass、@Helper

UtilityClass 生成工具类的注解 将一个类通过注解变成一个工具类&#xff0c;并没有什么用&#xff0c;本来代码中的工具类数量就极为有限&#xff0c;并不能达到减少重复代码的目的 1、如何使用 加在需要委托将其变为工具类的普通类上。 2、代码示例 例&#xff1a; Uti…

设计模式之原型模式(通俗易懂--代码辅助理解【Java版】)

文章目录 设计模式概述1、原型模式2、原型模式的使用场景3、优点4、缺点5、主要角色6、代码示例7、总结题外话关于使用序列化实现深拷贝 设计模式概述 创建型模式&#xff1a;工厂方法、抽象方法、建造者、原型、单例。 结构型模式有&#xff1a;适配器、桥接、组合、装饰器、…

构建高效新闻推荐系统:Spring Boot的力量

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

MacBook远程连接服务器,显示tensorboard的loss值

尼卡形态 GEAR-5 参考链接 当使用服务器进行模型训练时&#xff0c;想要使用MacBook查看一些可视化结果&#xff0c;如果远程服务器和本机在一个局域网内&#xff0c;可以通过以下命令解决&#xff1a; 登录服务器&#xff1a; 先用ssh工具重定向&#xff1a;ssh -L 16006:127…

java:pdfbox 删除扫描版PDF中文本水印

官网下载 https://pdfbox.apache.org/download.html下载 pdfbox-app-3.0.3.jar cd D:\pdfbox 运行 java -jar pdfbox-app-3.0.3.jar java -jar pdfbox-app-3.0.3.jar Usage: pdfbox [COMMAND] [OPTIONS] Commands:debug Analyzes and inspects the internal structu…

RTSP协议讲解

1.RTSP协议 rtsp&#xff0c;英文全称 Real Time Streaming Protocol&#xff0c;RFC2326&#xff0c;实时流传输协议&#xff0c;是 TCP/IP 协议体系中的一个应用层协议。 RTSP 交互流程 1&#xff09;OPTIONS C--->S 客户端向服务器端发现 OPTIONS&#xff0c;请求可用…

JVM(Java Virtual Machine) 详解

1. JVM 内存区域划分 一个 Java 写的程序&#xff0c;跑起来就得到了一个 Java 进程&#xff08;资源分配的基本单位&#xff09; JVM 上面运行的字节码指令 1) 程序计数器&#xff08;比较小的空间&#xff09;&#xff0c;保存了下一条要执行的指令的地址 这个不是 CPU 的…

API接口开发系列文章:构建高效、安全与可扩展的API服务

前言 在当今的数字化时代&#xff0c;API&#xff08;应用程序编程接口&#xff09;已成为连接不同系统、服务和应用的核心桥梁。无论是企业内部的数据交互&#xff0c;还是面向第三方的服务开放&#xff0c;API都扮演着至关重要的角色。本系列文章将深入探讨API接口开发的各个…

两名大学生利用Meta的智能眼镜展示了一项令人震惊的技术,能够实时“人肉”他人的身份信息

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

每日一练:地下城游戏

174. 地下城游戏 - 力扣&#xff08;LeetCode&#xff09; 题目要求&#xff1a; 恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里&#xff0c;他必须穿过地下城并通过对抗恶魔…