【LeetCode周赛】LeetCode第362场周赛

news2025/1/15 20:45:28

LeetCode第362场周赛

  • 与车相交的点
  • 判断能否在给定时间到达单元格
  • 将石头分散到网格图的最少移动次数

与车相交的点

给你一个下标从 0 开始的二维整数数组 nums 表示汽车停放在数轴上的坐标。对于任意下标 i,nums[i] = [starti, endi] ,其中 starti 是第 i 辆车的起点,endi 是第 i 辆车的终点。

返回数轴上被车 任意部分 覆盖的整数点的数目。
示例 1:

输入:nums = [[3,6],[1,5],[4,7]]
输出:7
解释:从 1 到 7 的所有点都至少与一辆车相交,因此答案为 7 。

示例 2:

输入:nums = [[1,3],[5,8]]
输出:7
解释:1、2、3、5、6、7、8 共计 7 个点满足至少与一辆车相交,因此答案为7 。

提示:
1 < = n u m s . l e n g t h < = 100 1 <= nums.length <= 100 1<=nums.length<=100
n u m s [ i ] . l e n g t h = = 2 nums[i].length == 2 nums[i].length==2
1 < = s t a r t i < = e n d i < = 100 1 <= starti <= endi <= 100 1<=starti<=endi<=100
分析:
这是一个简单的差分数组题,可以用差分数组求出每一个点被覆盖了多少次,答案就是覆盖次数大于0的点的个数。
代码:

class Solution {
public:
    int numberOfPoints(vector<vector<int>>& nums) {
        int a[105];
        memset(a,0,sizeof(a));
        for(auto num:nums){
            a[num[0]]++;
            a[num[1]+1]--;
        }
        int ans=0;
        for(int i=1;i<=100;i++)a[i]+=a[i-1];
        for(int i=1;i<=100;i++){
            if(a[i]>0)ans++;
        }
        return ans;
    }
};

判断能否在给定时间到达单元格

给你四个整数 sx、sy、fx、fy 以及一个 非负整数 t 。
在一个无限的二维网格中,你从单元格 (sx, sy) 开始出发。每一秒,你 必须 移动到任一与之前所处单元格相邻的单元格中。
如果你能在 恰好 t 秒 后到达单元格 (fx, fy) ,返回 true ;否则,返回 false 。
单元格的 相邻单元格 是指该单元格周围与其至少共享一个角的 8 个单元格。你可以多次访问同一个单元格。
示例 1:
在这里插入图片描述

输入:sx = 2, sy = 4, fx = 7, fy = 7, t = 6
输出:true
解释:从单元格 (2, 4)开始出发,穿过上图标注的单元格,可以在恰好 6 秒后到达单元格 (7, 7) 。

示例 2:
在这里插入图片描述

输入:sx = 3, sy = 1, fx = 7, fy = 3, t = 3
输出:false
解释:从单元格 (3, 1)开始出发,穿过上图标注的单元格,至少需要 4 秒后到达单元格 (7, 3) 。 因此,无法在 3 秒后到达单元格 (7, 3)。

提示:
1 < = s x , s y , f x , f y < = 1 0 9 1 <= sx, sy, fx, fy <= 10^9 1<=sx,sy,fx,fy<=109
0 < = t < = 1 0 9 0 <= t <= 10^9 0<=t<=109

分析:
这个题目有一点小坑点,首先,由于可以往八个方向走,因此,最少最少可以用 m a x ( a b s ( s x − f x ) , a b s ( s y − f y ) ) max(abs(sx-fx),abs(sy-fy)) max(abs(sxfx),abs(syfy))步,可以到达指定位置,所以只要t大于等于这个最少步骤,即可满足条件(因为你可以在终点附近一直绕,当绕到相应要求是再去终点即可)。
但是有一个特殊情况,如果起点和终点重合, t = 1 t=1 t=1时,是肯定到不了终点的,因为必须走出去一步,考虑到这一点即可。
代码:

class Solution {
public:
    bool isReachableAtTime(int sx, int sy, int fx, int fy, int t) {
        if(sx==fx&&sy==fy){
            return t!=1;
        }
        int minn=max(abs(sx-fx),abs(sy-fy));
        return t>=minn;
    }
};

将石头分散到网格图的最少移动次数

给你一个大小为 3 * 3 ,下标从 0 开始的二维整数矩阵 grid ,分别表示每一个格子里石头的数目。网格图中总共恰好有 9 个石头,一个格子里可能会有 多个 石头。

每一次操作中,你可以将一个石头从它当前所在格子移动到一个至少有一条公共边的相邻格子。

请你返回每个格子恰好有一个石头的 最少移动次数 。
示例 1:
在这里插入图片描述

输入:grid = [[1,1,0],[1,1,1],[1,2,1]]
输出:3
解释:让每个格子都有一个石头的一个操作序列为:
1 -将一个石头从格子 (2,1) 移动到 (2,2) 。
2 - 将一个石头从格子 (2,2) 移动到 (1,2) 。
3 - 将一个石头从格子(1,2) 移动到 (0,2) 。 总共需要 3 次操作让每个格子都有一个石头。 让每个格子都有一个石头的最少操作次数为 3 。

示例 2:
在这里插入图片描述

输入:grid = [[1,3,0],[1,0,0],[1,0,3]]
输出:4
解释:让每个格子都有一个石头的一个操作序列为:
1 -将一个石头从格子 (0,1) 移动到 (0,2) 。
2 - 将一个石头从格子 (0,1) 移动到 (1,1) 。
3 - 将一个石头从格子(2,2) 移动到 (1,2) 。 4 - 将一个石头从格子 (2,2) 移动到 (2,1) 。 总共需要 4次操作让每个格子都有一个石头。 让每个格子都有一个石头的最少操作次数为 4 。

提示:
g r i d . l e n g t h = = g r i d [ i ] . l e n g t h = = 3 grid.length == grid[i].length == 3 grid.length==grid[i].length==3
0 < = g r i d [ i ] [ j ] < = 9 0 <= grid[i][j] <= 9 0<=grid[i][j]<=9
g r i d 中元素之和为 9 。 grid 中元素之和为 9 。 grid中元素之和为9

分析:
因为数据范围很小,可以考虑全排列求解。根据题意,可以分析出,只要将所有位置多出来的石头移动到位置石头数为0的地方即可。那么我们可以先存储所有石头多的位置和0石头的位置,对0石头的位置进行全排列,然后依次计算从石头多的位置移动到0石头的位置需要多少步,维护一个最小值即可。
代码:

class Solution {
public:
    int minimumMoves(vector<vector<int>>& grid) {
        vector<pair<int,int>>more;//存储多出来的点
        vector<pair<int,int>>less;//存储少的点,即0点
        for(int i=0;i<grid.size();i++){
            for(int j=0;j<grid[i].size();j++){
                if(grid[i][j]>1){
                    int k=grid[i][j];
                    while(k>1){
                        more.push_back({i,j});
                        k--;
                    }
                }else if(grid[i][j]==0)less.push_back({i,j});
            }
        }
        //对less全排列,然后计算more和less的距离
        int ans=1e9;
        do{
            int cnt=0;
            for(int i=0;i<less.size();i++){
                cnt+=abs(more[i].first-less[i].first)+abs(more[i].second-less[i].second);
            }
            ans=min(ans,cnt);
        }while(next_permutation(less.begin(),less.end()));
        return ans;
    }
};

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

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

相关文章

讯飞星火认知大模型,多种应用一键体验整合

分享几个可以&#xff0c;直接可以使用的AI应用&#xff0c;依托于讯飞星火大模型实现的&#xff1b; 现在讯飞星火认知大模型&#xff0c;使用已经完全开放&#xff0c;可以直接使用&#xff1b; AI抖音商品种草文案 功能&#xff1a; 通过将商品信息输入到讯飞星火AI大模…

IntelliJ IDEA工具常用插件汇总

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;IntelliJ IDEA 、常用插件☀️每日 一言&#xff1a;人的一生其实都在偏见和走出偏见中度过 文章目录 一、前言二、Plugins1.Key Promoter X2.CodeGlance3.Git Integration&#xff1a;4.Markdow…

SpringBoot整合Mybatis-Plus(含自动配置分析)

目录 1. Mybatis-Plus介绍2. 创建Mysql表和添加测试数据3. 添加pom.xml依赖4. 自动配置分析5. 代码实现5.1 User类实现5.2 指定MapperScan扫描路径5.3 Mapper接口实现5.4 Service实现5.5 UserMapper测试 1. Mybatis-Plus介绍 Mybatis-Plus是一个Mybatis的增强工具&#xff0c;…

Rich Bowen: 无论你在创造什么,最终交付的是信任。

早在开源被我们称之为开源&#xff0c;Rich Bowen 就已经参与其中。作为 Apache 软件基金会的成员&#xff0c;Rich 目前担任董事会成员、会议副总裁。此外&#xff0c;他还是亚马逊云科技的开源策略师。这些多重角色赋予了他对开源的更广泛和深刻的理解。 在他于 2023 年 Com…

远程连接mysql报错“Host xxx is not allowed to connect to this MySQL server“解决办法

在一台服务器上安装了mysql后使用dbeaver远程连接不上报错&#xff1a; 可以看到&#xff0c;报错原因是不许远程连接到mysql服务器 所以&#xff0c;修改访问权限。 首先&#xff0c;进入mysql命令行&#xff0c;查看访问权限&#xff1a; use mysql; select user,host from…

【ProxySql】Mysql如何实现读写分离?看这一篇就够了

&#x1f332;其他工具对比 其实市面上有很多关于读写分离的优秀的工具&#xff0c;例如 工具优势劣势ProxySQL- 高性能的负载均衡和连接池管理- 支持MySQL和MariaDB- 灵活的配置和规则定义- 只支持MySQL和MariaDB数据库- 功能相对专注&#xff0c;适用性可能有限- 学习和配置…

K线学习001-早晨之星1

K线定义 早晨之星&#xff0c;顾名思义&#xff1a;就是在太阳尚未升起的时候&#xff0c;黎明前最黑暗的时刻&#xff0c;一颗明亮的启明星在天边指引着那些走向光明的夜行人&#xff0c;前途当然看好。 早晨之星&#xff0c;即预示着跌势将尽&#xff0c;大盘处于拉升的前夜&…

DGIOT 智慧车间机床设备数据采集

**[小 迪 导读]**&#xff1a;DGiot掌上工厂是一款基于微信小程序的应用&#xff0c;本次主要介绍机床设备数据采集功能&#xff0c;旨在帮助施工员高效地收集车间中每台机床的信息、水平座标轴数据和照片。该小程序提供了简单易用的界面和功能&#xff0c;使施工员能够方便地记…

NameError: name ‘add start docstrings to callable‘ is not defined解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

中国又一款3纳米芯片将量产,高通被前后夹击,难怪要降价求售了

高通作为手机芯片市场的领先者&#xff0c;曾长达十多年位居手机芯片市场的王者地位&#xff0c;不过从2020年以来就已被中国芯片企业超越&#xff0c;至今未能挽回&#xff0c;而近期中国一家手机企业的9000S芯片推出更给予高通重击&#xff0c;可能导致高通在中国手机芯片市场…

管理类联考——数学——汇总篇——知识点突破——应用题——路程

⛲️ 路程问题是根据速度、时间、路程之间的关系&#xff0c;研究物体相向、相背和同向运动的问题&#xff0c;解决路程问题常用方法&#xff1a; &#xff08;1&#xff09;分解。将综合性的题目先分解成若干个基本题&#xff0c;再按其所属类型&#xff0c;直接利用基本数量…

【C++】list的模拟实现【完整理解版】

目录 一、list的概念引入 1、vector与list的对比 2、关于struct和class的使用 3、list的迭代器失效问题 二、list的模拟实现 1、list三个基本函数类 2、list的结点类的实现 3、list的迭代器类的实现 3.1 基本框架 3.2构造函数 3.3 operator* 3.4 operator-> 3…

四叶图-openGL 例子,第四章。计算机图形学 中例子 代码有点瑕疵

第四版 计算机图形学 中例子 代码有点瑕疵&#xff0c;见下图&#xff0c;本道长保证这个程序没有运行过。 可运行代码如下。 #include "stdafx.h" #include <GL/glut.h> #include <stdlib.h> #include <math.h> #include <iostream> using…

UG\NX二次开发 计算uv参数的最小值最大值 UF_MODL_ask_face_uv_minmax

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: UG\NX二次开发 计算uv参数的最小值最大值 UF_MODL_ask_face_uv_minmax 效果: 代码: #include "me.hpp"void ufusr(char* param, int* ret…

探索如何将html和svg导出为图片

笔者开源了一个Web思维导图&#xff0c;在做导出为图片的功能时走了挺多弯路&#xff0c;所以通过本文来记录一下。 思维导图的节点和连线都是通过 svg 渲染的&#xff0c;作为一个纯 js 库&#xff0c;我们不考虑通过后端来实现&#xff0c;所以只能思考如何通过纯前端的方式…

d3dx9_43.dll丢失如何修复?四种快速修复d3dx9_43.dll丢失的方法分享

在我们日常使用电脑的过程中&#xff0c;有时候会遇到一些问题&#xff0c;其中比较常见的一种就是电脑提示 d3dx9_43.dll 丢失。对于这种情况&#xff0c;我们该如何解决呢&#xff1f;本文将详细介绍 d3dx9_43.dll 文件的相关信息&#xff0c;以及解决 d3dx9_43.dll 丢失的四…

[hello,world]这个如何将[ ] 去掉

[hello,world]这个如何将[ ] 去掉&#xff1f; 你可以使用编程语言中的字符串处理函数来去掉方括号。以下是一个示例代码&#xff0c;使用Python的strip()函数去掉方括号&#xff1a; text "[hello,world]" text text.strip("[]") print(text)输出为&a…

CVPR:使用完全交叉Transformer的小样本目标检测

关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;ComputerVisionGzq 学习群&#xff5c;扫码在主页获取加入方式 论文地址&#xff1a; https://openaccess.thecvf.com/content/CVPR2022/papers/Han_Few-Shot_Object_Detection_With_Fully_Cross-Transformer_CVPR…

多元共进|支持多元梦想,创造包容文化环境

谷歌致力于推动多元、平等、共融 鼓励每个人赞扬自己取得的成就 了解自我展示的重要性 一起了解 2023 Google 开发者大会上 谷歌如何支持企业创造多元共融的文化 打造包容性的工作场所 为每个人创造更加温暖的环境 多元、平等、共融 (DEI)&#xff0c;三个板块之间互相联系&…

[H5动画制作系列] Sprite及Text Demo

参考代码: sprite.js: var canvas, stage, container; canvas document.getElementById("mainView"); function init() {stage new createjs.Stage(canvas);createjs.Touch.enable(stage);var loader new createjs.LoadQueue(false);loader.addEventListener(&q…