LeetCode---128双周赛

news2024/11/17 3:38:48

题目列表

3110. 字符串的分数

3111. 覆盖所有点的最少矩形数目

3112. 访问消失节点的最少时间

3113. 边界元素是最大值的子数组数目

一、字符串的分数

按照题目要求,直接模拟遍历即可,代码如下

class Solution {
public:
    int scoreOfString(string s) {
        int ans = 0;
        int n = s.size();
        for(int i=1;i<n;i++){
            ans += abs(s[i]-s[i-1]);
        }
        return ans;
    }
};

二、覆盖所有点的最小矩阵数目

题目没有限制矩阵的高度,我们只要关心矩阵宽度<=w即可,代码如下

class Solution {
public:
    int minRectanglesToCoverPoints(vector<vector<int>>& points, int w) {
        int n = points.size();
        sort(points.begin(),points.end());
        int ans = 0;
        for(int i=0;i<n;){
            int j = i++;
            while(i<n&&points[i][0]-points[j][0]<=w)
                i++;
            ans++;
        }
        return ans;
    }
};

三、访问消失结点的最少时间

这题抛开消失的结点这一条件后,就是单纯的迪杰斯特拉算法求到单源结点的最短路径问题,所以这题的核心就是对迪杰斯特拉算法进行变形。这里的变形也很简单,就是再更新最短路径的时候,也要判断当前结点是否已经消失,如果消失同样无法更新。

简单介绍一下迪杰斯特拉算法的步骤(适用于边权>=0):

需要三个数组

  • dist[n] --- 记录vi - v0 的最短路径,初始化为无穷大
  • parent[n] --- 记录vi的上一个结点 ,用来回溯vi到v0所需要经过的结点,初始化为-1
  • vis[n] --- 记录结点的最短路径是否已经被计算过,初始化为false

其中parent不是计算最短路径长度所必须的,如果不需要得到具体路径,可以不要

算法的执行过程如下

代码如下

class Solution {
public:
    vector<int> minimumTime(int n, vector<vector<int>>& edges, vector<int>& disappear) {
        vector<vector<pair<int,int>>>g(n);
        for(auto v:edges){
            int x = v[0], y = v[1], w = v[2];
            g[x].emplace_back(y,w);
            g[y].emplace_back(x,w);
        }
        vector<int> dist(n,INT_MAX);
        // 用优先级队列(堆)优化算法
        priority_queue<pair<int,int>>pq; // [d,i]
        pq.emplace(0,0);
        dist[0] = 0;
        while(pq.size()){
            auto [d,i] = pq.top();pq.pop();
            if(dist[i]!=-d) continue; // 懒更新
            for(auto [x,w]:g[i]){
                if(dist[i]+w < dist[x] && dist[i]+w < disappear[x]){ // 注意结点的消失时间
                    dist[x] = dist[i]+w;
                    pq.emplace(-dist[x],x);
                }
            }
        }
        for(auto&e:dist){
            if(e==INT_MAX)
                e = -1;
        }
        return dist;
    }
};

 四、边界元素是最大值的子数组数目

这题题目看完之后,没思路先看看给的样例,去手动模拟一下,很容易就会发现,如果出现一个很大的数字,那么它左边的数字就没法在和它右边的数字组成符合条件的子数组了,也就是说前面的数字无用了,一般这种会导致元素失效的,可以往单调栈和单调队列上去思考,这题就能用单调栈来做,具体思路如下:

遍历数组,我们维护一个单调递减的栈,栈中记录元素大小和元素出现的次数,如果遇到比栈顶元素大的数,将栈顶元素pop,因为它无法在和当前位置右边的数再组成合法的子数组了,直到当前栈顶元素大于/等于nums[i],然后判断是否等于,如果等于,更新答案和该元素出现次数,如果大于,直接让元素入栈,代码如下

class Solution {
public:
    long long numberOfSubarrays(vector<int>& nums) {
        int n = nums.size();
        long long ans = n;
        stack<pair<int,int>>st;
        for(int i = 0; i < n; i++){
            while(st.size()&&nums[i]>st.top().first){
                st.pop();
            }
            if(st.size()&&st.top().first==nums[i]){
                ans+=st.top().second++;
            }else{
                st.emplace(nums[i],1);
            }
        }
        return ans;
    }
};

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

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

相关文章

如何通过通过钉钉发送信息????????

1、通过钉钉群添加一个机器人 2、代码实现 /*** 发钉钉审核.** param*/private void sendDingDing(String tableName) {String url "https://oapi.dingtalk.com/robot/send?access_token229c627d05a3157f79a5ef1942d29c4dfb4515bf5c0ad65e3c69423bc016f97c";JSONOb…

达梦数据库的AWR报告

达梦数据库的AWR报告 数据库快照是一个只读的静态的数据库。 DM 快照功能是基于数据库实现的&#xff0c;每个快照是基于数据库的只读镜像。通过检索快照&#xff0c;可以获取源数据库在快照创建时间点的相关数据信息。 为了方便管理自动工作集负载信息库 AWR&#xff08;Auto…

网络编程初步

协议&#xff1a; 一组规则 分层模型结构&#xff1a; OSI七层模型&#xff1a;物、数、网、传、会、表、应 TCP/IP 4层模型&#xff1a;网&#xff08;链路层/网络接口层)、网、传、应 应用层&#xff1a;http、 ftp、 nfs、 ssh、 telneto o .传输层:TCP、UDP 网络层&…

累加(C语言)

一、题目&#xff1b; 二、N-S流程图&#xff1b; 三、运行结果&#xff1b; 四、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i 0;int j 0;int n 5;int result 0;int sum 0;//运算&#…

笔试强训未触及题目(个人向)

NC398 腐烂的苹果 1.题目 2.解析 这是一个广度优先搜索问题&#xff0c;我们可以先找到所有的烂苹果&#xff0c;把它加入到队列中&#xff0c;然后再同时让这几个苹果向外面腐蚀&#xff0c;我们可以用一个boolean数组来表示是否被腐蚀&#xff0c;也可以直接在原数组中将这…

ThingsBoard通过规则链创建报警信息

什么是规则引擎? 典型实例 1、复制根规则链为报警规则链路 2、拖动Script Filter 规则节点放入链中并配置如下脚本: 3、配置名称为&#xff1a;高温报警&#xff0c;并执行下面的脚本 4、将Script于上一个节点进行关联 5、选择动作里面的create alarm节点信息并放入其中…

解决微信打开文件编辑显示只读状态

微信官网下载地址&#xff1a;微信&#xff0c;是一个生活方式 新版本解决方案&#xff1a; 微信打开文件只读问题终于得到彻底解决了&#xff01;请尽快升级微信 Windows3.9.6 或者微信 mac3.8.1 版本&#xff0c;均新增聊天文件取消只读开关. 旧版本解决方案&#xff1a; …

【笔记】应对Chrome更新导致Chromedriver失效的解决方案:Chrome For Test

随着网络应用和网站的不断发展&#xff0c;自动化测试变得越来越重要&#xff0c;而Selenium成为了许多开发者和测试人员的首选工具之一。然而&#xff0c;对于使用Selenium来进行网站测试的人来说&#xff0c;Chrome浏览器的频繁更新可能会成为一个头疼的问题。每当Chrome更新…

如何在本地服务器部署TeslaMate

文章目录 1.主要参考官方文档2.准备文件&#xff1a;docker-compose.yml3.运行4.成功后4.1 在这个链接&#xff0c;更具提示登录4.2 在这个链接可以看到电池健康和行车数据等 5.后续说明6.进行数据备份6.1 先将数据进行备份&#xff0c;参考链接6.2 数据迁移6.3 下图为我挂该数…

洛谷P1057 [NOIP2008 普及组] 传球游戏

#include<iostream> using namespace std; int n;// n个人传球游戏 默认开始球在编号为1的位置 int m;// 传递m次球 int main(){cin>>n>>m;// 动态转方程&#xff1a;// 球传递到编号为k人的手中// 种类总数 传递到k-1编号种类总数 传递到k1编号种类总数//…

精通代码格式:如何有效管理Python代码行长度

文章目录 1. 问题描述2. 设置文本编辑器的规则2.1 PyCharm 设置2.2 Visual Studio Code 设置 今天写代码遇到一个滑稽的问题&#xff0c;python代码的换行也有规则&#xff0c;于是记录一下 1. 问题描述 在刷LeetCode验证二叉树的时候我写了如下代码&#xff1a; if (not hel…

二分答案复习

y总二分查找算法模板 int bsearch_1(int l, int r) {while (l < r){int mid l r >> 1;//性质在右边&#xff0c;区间划分成[l, mid]和[mid 1, r]if (check(mid)) r mid;else l mid 1;}return l; }int bsearch_2(int l, int r) {while (l < r){int mid l r …

【C++】哈希结构

目录 一&#xff0c;哈希结构的认识 1-1&#xff0c;哈希思想 1-2&#xff0c;哈希函数 1-3&#xff0c;哈希冲突 1-3-1&#xff0c;闭散列 1-3-2&#xff0c;开散列 二&#xff0c;哈希结构的封装实现 2-1&#xff0c;闭散列封装实现 ​编辑 2-2&#xff0c;开散列封…

Sy-linux下常用的网络命令linux network commands

linux下的网络命令非常强大&#xff0c;这里根据教材需要&#xff0c;列出来常用的网络命令和场景实例&#xff0c;供参考。 一、命令列表&#xff1a; Command Description ip Manipulating routing to assigning and configuring network parameters traceroute Identi…

分组查询得到一列多行数据后,怎么用来和表中的某列数据进行一一比较

#10&#xff09;查询每个学生超过他自己选修课程平均成绩的课程号 这里要先进行分组得到每个学号对应的平均成绩&#xff0c;在用表中的成绩grade与得到的平均成绩一一比较 这里可以进行连表操作&#xff0c;把分组查询得到的结果与原表通过sno学号进行等值连接 &#xff0c;就…

MySQL数据库外键约束打开与关闭 ️

MySQL数据库外键约束打开与关闭 &#x1f6e0;️ MySQL数据库外键约束打开与关闭 &#x1f6e0;️摘要 &#x1f4dd;引言 &#x1f680;正文内容&#xff08;详细介绍&#xff09; &#x1f4a1;关闭外键约束检查外键约束检查关闭的作用风险与最佳实践建议 &#x1f914; QA环…

一分钟成为点灯大师(超简单1行代码-STM32F407的HAL实现按键中断方式点亮LED灯)

一、开发环境 硬件&#xff1a;正点原子探索者 V3 STM32F407 开发板 单片机&#xff1a;STM32F407ZGT6 Keil版本&#xff1a;5.32 STM32CubeMX版本&#xff1a;6.9.2 STM32Cube MCU Packges版本&#xff1a;STM32F4 V1.27.1 使用STM32F407的HAL库实现按键中断方式读取按键…

在Vue项目使用kindEditor富文本编译器以及上传图片

第一步 npm install kindeditor第二步&#xff0c;建立kindeditor.vue组件 <template><div class"kindeditor"><textarea :id"id" name"content" v-model"outContent"></textarea></div> </templa…

49-PCIE转网口电路设计

视频链接 PCIE转网口电路设计01_哔哩哔哩_bilibili PCIe转网口电路设计 1、PCIE转网口电路设计基本介绍 pcie转网口的设计&#xff0c;一般有intel (i350)和网讯&#xff08;wx1860&#xff09;两种方案。 2、PCIE转网口的方案 2.1、I350 2.2、WX1860 (网迅) 国产化&#…

【Java】如何获取客户端IP地址

在项目中往往涉及到“获取客户端IP地址”&#xff0c;常见到下面这样子的代码&#xff1a; package com.utils;import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.http.server.reactive.ServerHttpRequest; import java.net…