wy的leetcode刷题记录_Day93

wy的leetcode刷题记录_Day93

声明

本文章的所有题目信息都来源于leetcode
如有侵权请联系我删掉!
时间:2024-3-23

前言

目录

  • wy的leetcode刷题记录_Day93
    • 声明
    • 前言
    • 2549. 统计桌面上的不同数字
      • 题目介绍
      • 思路
      • 代码
      • 收获
    • 827. 最大人工岛
      • 题目介绍
      • 思路
      • 代码
      • 收获
    • 200. 岛屿数量
      • 题目介绍
      • 思路
      • 代码
      • 收获
    • 463. 岛屿的周长
      • 题目介绍
      • 思路
      • 代码
      • 收获

2549. 统计桌面上的不同数字

今天的每日一题是:2549. 统计桌面上的不同数字

题目介绍

给你一个正整数 n ,开始时,它放在桌面上。在 109 天内,每天都要执行下述步骤:

  • 对于出现在桌面上的每个数字 x ,找出符合 1 <= i <= n 且满足 x % i == 1 的所有数字 i 。
  • 然后,将这些数字放在桌面上。

返回在 109 天之后,出现在桌面上的 不同 整数的数目。

注意:

  • 一旦数字放在桌面上,则会一直保留直到结束。
  • % 表示取余运算。例如,14 % 3 等于 2 。

示例 1:

输入:n = 5
输出:4
解释:最开始,5 在桌面上。 第二天,2 和 4 也出现在桌面上,因为 5 % 2 == 1 且 5 % 4 == 1 。 再过一天 3 也出现在桌面上,因为 4 % 3 == 1 。 在十亿天结束时,桌面上的不同数字有 2 、3 、4 、5 。

示例 2:

输入:n = 3
输出:2
解释: 因为 3 % 2 == 1 ,2 也出现在桌面上。 在十亿天结束时,桌面上的不同数字只有两个:2 和 3 。

思路

方法一:模拟,这里我只说思路,可以使用一个队列来存放需要求余的数。一开始队列里是n,根据n求出的数得到符合条件的数在入队,直到没有符合题意的数也就是队列空即可。
方法二:emmmmmmm,有木有发现n%n-1=1,其实每个数都会出现在桌子上,考虑1的特殊情况即可。这道题如果让我们判断某个数字出现的天数还是比较麻烦的,判断数字的个数其实仔细看看就一行代码就解决了。

代码

class Solution {
public:int distinctIntegers(int n) {return max(n-1,1);}
};

收获

827. 最大人工岛

827. 最大人工岛

题目介绍

给你一个大小为 n x n 二进制矩阵 grid 。最多 只能将一格 0 变成 1 。

返回执行此操作后,grid 中最大的岛屿面积是多少?

岛屿 由一组上、下、左、右四个方向相连的 1 形成。

示例 1:

输入: grid = [[1, 0], [0, 1]]
输出: 3
解释: 将一格0变成1,最终连通两个小岛得到面积为 3 的岛屿。

示例2:

输入: grid = [[1, 1], [1, 0]]
输出: 4
解释: 将一格0变成1,岛屿的面积扩大为 4。

示例 3:

输入: grid = [[1, 1], [1, 1]]
输出: 4
解释: 没有0可以让我们变成1,面积依然为 4。

思路

总体思路就是网格化dfs,进行两次dfs,一次用来计算各个岛屿的面积,并且给与编号来标记。第二次遍历海洋判断是否能与两边的陆地进行连接,维护连接后的最大面积。

代码

class Solution {
public:unordered_map<int, int> area; //每个区域面积int area_num = 0;void dfs(vector<vector<int>>& grid, int label, int x, int y){if(!(x>=0&& x< grid.size() && y>=0 && y< grid[0].size()))return;if(grid[x][y] == label || grid[x][y] == 0)return;area_num += 1;grid[x][y] = label;dfs(grid, label, x+1, y);dfs(grid, label, x-1, y);dfs(grid, label, x, y+1);dfs(grid, label, x, y-1);}int largestIsland(vector<vector<int>>& grid) {int m = grid.size(), n = grid[0].size();int label = 2;int ret = 0;for(int i=0; i< m; i++){for(int j=0; j< n; j++){if(grid[i][j] == 1){dfs(grid, label, i, j);area[label++] = area_num;ret = max(ret, area_num);area_num = 0;}}}vector<vector<int>> D = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};for(int i=0; i< m; i++){for(int j=0; j< n; j++){if(grid[i][j] == 0){int cur_area = 1;unordered_set<int> s;for(auto& d: D){int x = i+d[0];int y = j+d[1];if((x>=0&& x< grid.size() && y>=0 && y< grid[0].size())){if(grid[x][y]){s.insert(grid[x][y]);}}}for(auto i: s){cur_area += area[i];}ret = max(cur_area, ret);}}}return ret;}
};

收获

200. 岛屿数量

200. 岛屿数量

题目介绍

给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

示例 1:

输入:grid =
[ [“1”,“1”,“1”,“1”,“0”],
[“1”,“1”,“0”,“1”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“0”,“0”,“0”] ]
输出:1

示例 2:

输入:grid =
[ [“1”,“1”,“0”,“0”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“1”,“0”,“0”],
[“0”,“0”,“0”,“1”,“1”] ]
输出:3

思路

使用DFS遍历所有格子,将遍历过的格子进行标记即可,每当超过边界或者遇到海水或者遍历过的格子结束此次dfs搜寻,最后维护岛屿个数变量。

代码

class Solution {
public:void dfs(vector<vector<char>>& grid,int x,int y){if(x<0||x>=grid.size()||y<0||y>=grid[0].size())return ;if(grid[x][y]!='1')return ;grid[x][y]='0';dfs(grid,x+1,y);dfs(grid,x,y+1);dfs(grid,x,y-1);dfs(grid,x-1,y);}int numIslands(vector<vector<char>>& grid) {int ans=0;int n=grid.size();int m=grid[0].size();for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(grid[i][j]=='1'){                dfs(grid,i,j);ans++;}}}return ans;}
};

收获

463. 岛屿的周长

463. 岛屿的周长

题目介绍

给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] = 1 表示陆地, grid[i][j] = 0 表示水域。

网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。

岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。

示例 1:
在这里插入图片描述
输入:grid = [[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0]]
输出:16
解释:它的周长是上面图片中的 16 个黄色的边

示例 2:

输入:grid = [[1]]
输出:4

示例 3:

输入:grid = [[1,0]]
输出:4

思路

仔细观察题,其实这道题可以理解为判断贡献度的问题,当你通过dfs遍历到一个陆地时,如果你的临近的某一块格子是水或者是边界,那么你当前所处的陆地就存在这一条临近边,如果你的临近的格子是一块陆地的话,那么就没有这条临近边,一共四个方向判断。

代码

DFS:

class Solution {
public:int dfs(vector<vector<int>> & grid,int x,int y){if(x>=grid.size()||x<0||y>=grid[0].size()||y<0||grid[x][y]==0){return 1;}if(grid[x][y]==2)return 0;grid[x][y]=2;return dfs(grid,x+1,y)+dfs(grid,x,y+1)+dfs(grid,x-1,y)+dfs(grid,x,y-1);}int islandPerimeter(vector<vector<int>>& grid) {int n=grid.size();int m=grid[0].size();int ans=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(grid[i][j]==1)ans+=dfs(grid,i,j);}}return ans;}
};

遍历:

class Solution {
public:int islandPerimeter(vector<vector<int>>& grid) {int n=grid.size();int m=grid[0].size();int ans=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){int count=0;if(grid[i][j]==1){if(i+1>=n||grid[i+1][j]!=1)count++;if(i-1<0||grid[i-1][j]!=1)count++;if(j+1>=m||grid[i][j+1]!=1)count++;if(j-1<0||grid[i][j-1]!=1)count++;}ans+=count;}}return ans;}
};

收获

本次了解了网格化的dfs的一些操作流程,以及特殊情况的记录。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Godot4.2】像素直线画法及点求取函数

概述 基于CanvasItem提供的绘图函数进行线段绘制只需要直接调用draw_line函数就可以了。 但是对于可以保存和赋值节点直接使用的纹理图片&#xff0c;却需要依靠Image类。而Image类没有直接提供基于像素的绘图函数。只能依靠set_pixel或set_pixelv进行逐个像素的填色。 所以…

数字乡村发展策略:科技引领农村实现跨越式发展

随着信息技术的迅猛发展和数字经济的崛起&#xff0c;数字乡村发展策略已经成为引领农村实现跨越式发展的重要手段。科技的力量正在深刻改变着传统农业的生产方式、农村的社会结构以及农民的生活方式&#xff0c;为农村经济发展注入了新的活力和动力。本文将从数字乡村的内涵、…

java每日一题——买啤酒(递归经典问题)

前言&#xff1a; 非常喜欢的一道题&#xff0c;经典中的经典。打好基础&#xff0c;daydayup!!!啤酒问题&#xff1a;一瓶啤酒2元&#xff0c;4个盖子可以换一瓶&#xff0c;2个空瓶可以换一瓶&#xff0c;请问10元可以喝几瓶 题目如下&#xff1a; 啤酒问题&#xff1a;一瓶…

基于图的在线社区假新闻检测建模

论文原文&#xff1a;Graph-based Modeling of Online Communities for Fake News Detection 论文代码&#xff1a;GitHub - shaanchandra/SAFER: Repository containing the official code for the paper Graph-based Modeling of Online Communities for Fake News Detectio…

KIMI爆了!对比文心一言和通义千问它到底有多强?

原文:赵侠客 前言 最近国产大模型KIMI爆了大部分人应该都知道了&#xff0c;从我个人的感受来看这次KIMI爆了我不是从技术领域接触到的&#xff0c;而是从各种金融领域接触到的。目前国内大模型可以说是百模大战&#xff0c;前几年新能源大战&#xff0c;今年资本割完韭菜后留…

java面向对象编程基础

对象&#xff1a; java程序中的对象&#xff1a; 本质上是一种特殊的数据结构 对象是由类new出来的&#xff0c;有了类就可以创建对象 对象在计算机的执行原理&#xff1a; student s1new student();每次new student(),就是在堆内存中开辟一块内存区域代表一个学生对象s1变…

Matlab DDPG

文章目录 1 rlSimulinkEnv1.1 说明1.2 例子1.2.1 使用工作空间Agent创建Simulink环境1.2.2 为Simulink模型创建强化学习环境1.2.3 创建Simulink多Agents环境2 创建Simulink环境和训练Agent2.1 创建环境接口2.2 创建DDPG Agent2.3 训练Agent2.4 验证已训练的Agent3 创建Simulink…

创建linux虚拟机系统:(安装Ubuntu镜像文件,包含语言设置、中文输入法、时间设置)

我下载的是清华大写开源软件镜像站中的ubuntu-20.04.6-desktop-amd64.iso这个镜像文件&#xff0c; 这个文件我下载完成之后没有解压&#xff0c;直接在创建虚拟机的时候选择的压缩包。 地址为&#xff1a;Index of /ubuntu-releases/20.04/ | 清华大学开源软件镜像站 | Tsin…

Git——IDEA中的使用详解

目录 Git1、IDEA中配置Git2、将本地项目推送到远程仓库2.1、创建项目远程仓库2.2、初始化本地仓库2.3、连接远程仓库2.4、提交到本地仓库2.5、推送到远程仓库 3、克隆远程仓库到本地4、基本操作4.1、代码提交到暂存区4.2、暂存区代码提交到本地库4.3、推送到远程仓库4.4、撤销本…

网络: 网络层

IP地址: 分为网络号和主机号. 用来标识主机 IP协议 IP协议报文 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大的数字是15, 因此IP头部最大长度是60字节. 8…

HarmonyOS NEXT应用开发案例集

概述 随着应用代码的复杂度提升&#xff0c;为了使应用有更好的可维护性和可扩展性&#xff0c;良好的应用架构设计变得尤为重要。本篇文章将介绍一个应用通用架构的设计思路&#xff0c;以减少模块间的耦合、提升团队开发效率&#xff0c;为开发者呈现一个清晰且结构化的开发…

YOLOv8:Roboflow公开数据集训练模型

Roboflow公开数据集 Roboflow是一个提供计算机视觉数据集管理和处理工具的平台。虽然Roboflow本身并不创建或策划公开数据集&#xff0c;但它提供了一系列功能&#xff0c;帮助用户组织、预处理、增强和导出计算机视觉数据集。 官方网站&#xff1a;https://universe.roboflow…

FOCUS-AND-DETECT: A SMALL OBJECTDETECTION FRAMEWORK FOR AERIAL IMAGES

摘要 为了解决小对象检测问题&#xff0c;提出了一个叫做 Focus-and Detect 的检测框架&#xff0c;它是一个两阶段的框架。 第 一阶段包括由高斯混合模型监督的对象检测器网络&#xff0c;生成构成聚焦区域的对象簇 。 第二阶段 也是一个物体探测器网络&#xff0c;预测聚焦…

Web框架开发-Ajax

一、 Ajax准备知识:json 1、json(Javascript Obiect Notation,JS对象标记)是一种轻量级的数据交换格式 1 2 它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。…

谧林涓露门禁

原神武器升级材料谧林涓露和门禁好像聂。 difference(){union(){cylinder(2, 10,10, $fn365);hull(){translate([15,0,0])cylinder(1,2,2,$fn365);cylinder(1,10,10,$fn365);}}translate([15,0,-1])cylinder(4,1,1,$fn365); }

swagger3快速使用

目录 &#x1f37f;1.导入依赖 &#x1f32d;2.添加配置文件 &#x1f9c2;3.添加注解 &#x1f96f;4.访问客户端 1.导入依赖 引入swagger3的依赖包 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artif…

智能驾驶域控制器行业介绍

汽车智能驾驶功能持续高速渗透&#xff0c;带来智能驾驶域控制器市场空间快速增 长。智驾域控制器是智能驾驶决策环节的重要零部件&#xff0c;主要功能为处理感知 信息、进行规划决策等。其核心部件主要为计算芯片&#xff0c;英伟达、地平线等芯 片厂商市场地位突出。随着消费…

【c语言】详解操作符(上)

1. 操作符的分类 2. 原码、反码、补码 整数的2进制表示方法有三种&#xff0c;即原码、反码、补码 有符号整数的三种表示方法均有符号位和数值位两部分&#xff0c;2进制序列中&#xff0c;最高位的1位是被当做符号位其余都是数值位。 符号位都是用0表示“正”&#xff0c;用…

二分算法(查找)

问题&#xff1a;在数组中查找某一个数字x4的下标 例&#xff1a;arr:1 3 4 6 10 20 21 22 显然&#xff0c;数字4的下标为3。 1、线性查找&#xff0c;一个个地去遍历&#xff0c;时间复杂度为O(n) 2、二分查找&#xff0…

国务院办公厅发布:政府类网站网页设计规范(试行)

国务院办公厅于2019年12月发布了《政府类网站网页设计规范&#xff08;试行&#xff09;》。该规范的发布旨在统一政府类网站的设计风格和标准&#xff0c;提升政府网站的用户体验和可访问性&#xff0c;推动政府信息公开和服务的提升。 该规范涵盖了政府类网站的各个方面&…