LeetCode 第 33 场双周赛(511/3304,前15.5%,第4次全部通过)

文章目录

    • 1. 比赛结果
    • 2. 题目
      • 1. LeetCode 5479. 千位分隔数 easy
      • 2. LeetCode 5480. 可以到达所有点的最少点数目 medium
      • 3. LeetCode 5481. 得到目标数组的最少函数调用次数 medium
      • 4. LeetCode 5482. 二维网格图中探测环 hard

1. 比赛结果

题目比较简单,全部做出来了。继续加油!

全国排名: 511 / 3304,15.5%;全球排名: 1626 / 11366,14.3%

在这里插入图片描述
在这里插入图片描述

2. 题目

1. LeetCode 5479. 千位分隔数 easy

题目链接

给你一个整数 n,请你每隔三位添加点(即 "." 符号)作为千位分隔符,并将结果以字符串格式返回。

示例 1:
输入:n = 987
输出:"987"示例 2:
输入:n = 1234
输出:"1.234"示例 3:
输入:n = 123456789
输出:"123.456.789"示例 4:
输入:n = 0
输出:"0"提示:
0 <= n < 2^31

解题:

  • 按题意模拟即可
class Solution {
public:string thousandSeparator(int n) {string num = to_string(n), ans;int k = 3;for(int i = int(num.size())-1; i >= 0; i--){if(k == 0){ans = "." + ans;//3位到了,加点k = 3;//重置3i++;//该位还需要再次访问}else{ans = num[i] + ans;//没到三次,加字符k--;}}return ans;}
};

0 ms 5.9 MB

2. LeetCode 5480. 可以到达所有点的最少点数目 medium

题目链接

给你一个 有向无环图 , n 个节点编号为 0 到 n-1 ,以及一个边数组 edges ,其中 edges[i] = [fromi, toi] 表示一条从点 fromi 到点 toi 的有向边。

找到最小的点集使得从这些点出发能到达图中所有点。题目保证解存在且唯一。

你可以以任意顺序返回这些节点编号。

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

输入:n = 6, edges = [[0,1],[0,2],[2,5],[3,4],[4,2]]
输出:[0,3]
解释:从单个节点出发无法到达所有节点。
从 0 出发我们可以到达 [0,1,2,5] 。
从 3 出发我们可以到达 [3,4,2,5] 。
所以我们输出 [0,3]

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

输入:n = 5, edges = [[0,1],[2,1],[3,1],[1,4],[2,4]]
输出:[0,2,3]
解释:注意到节点 032 无法从其他节点到达,
所以我们必须将它们包含在结果点集中,这些点都能到达节点 14 。提示:
2 <= n <= 10^5
1 <= edges.length <= min(10^5, n * (n - 1) / 2)
edges[i].length == 2
0 <= fromi, toi < n
所有点对 (fromi, toi) 互不相同。

解题:

  • 检查入度为0的节点
class Solution {
public:vector<int> findSmallestSetOfVertices(int n, vector<vector<int>>& edges) {vector<int> indegree(n, 0), ans;for(auto& e : edges) {indegree[e[1]]++;}for(int i = 0; i < n; i++){if(indegree[i] == 0)ans.push_back(i);}return ans;}
};

696 ms 94.5 MB

3. LeetCode 5481. 得到目标数组的最少函数调用次数 medium

题目链接

在这里插入图片描述
给你一个与 nums 大小相同 且 初始值 全为 0 的数组 arr ,请你调用以上函数得到整数数组 nums 。

请你返回将 arr 变成 nums 的最少函数调用次数

答案保证在 32 位有符号整数以内。

示例 1:
输入:nums = [1,5]
输出:5
解释:给第二个数加 1[0, 0] 变成 [0, 1]1 次操作)。
将所有数字乘以 2[0, 1] -> [0, 2] -> [0, 4]2 次操作)。
给两个数字都加 1[0, 4] -> [1, 4] -> [1, 5]2 次操作)。
总操作次数为:1 + 2 + 2 = 5 。示例 2:
输入:nums = [2,2]
输出:3
解释:给两个数字都加 1[0, 0] -> [0, 1] -> [1, 1]2 次操作)。
将所有数字乘以 2[1, 1] -> [2, 2]1 次操作)。
总操作次数为: 2 + 1 = 3 。示例 3:
输入:nums = [4,2,5]
输出:6
解释:(初始)[0,0,0] -> [1,0,0] -> [1,0,1] -> 
[2,0,2] -> [2,1,2] -> [4,2,4] -> [4,2,5] (nums 数组)。示例 4:
输入:nums = [3,2,2,4]
输出:7示例 5:
输入:nums = [2,4,8,16]
输出:8提示:
1 <= nums.length <= 10^5
0 <= nums[i] <= 10^9

解题:

  • 数组要乘以2的次数是最大的那个数,可以被2除的次数
  • 然后每个数不能被2整除时,就 -1,调用次数 +1
class Solution {
public:int minOperations(vector<int>& nums) {int s = 0, maxn = 0;for(int i = 0; i < nums.size(); ++i){maxn = max(maxn, nums[i]);}for(int i = 0; i < nums.size(); ++i){while(nums[i]){if(nums[i]&1)//不能整除{s++;//调用nums[i]--;}else{nums[i] /= 2;}}}while(maxn>1)//大于1时{maxn /= 2;//最大的数能被2除的次数s++;}return s;}
};

188 ms 25.5 MB

4. LeetCode 5482. 二维网格图中探测环 hard

题目链接

给你一个二维字符网格数组 grid ,大小为 m x n ,你需要检查 grid 中是否存在 相同值 形成的

一个环是一条开始和结束于同一个格子的长度 大于等于 4 的路径。对于一个给定的格子,你可以移动到它上、下、左、右四个方向相邻的格子之一,可以移动的前提是这两个格子有 相同的值 。

同时,你也不能回到上一次移动时所在的格子。比方说,环 (1, 1) -> (1, 2) -> (1, 1) 是不合法的,因为从 (1, 2) 移动到 (1, 1) 回到了上一次移动时的格子。

如果 grid 中有相同值形成的环,请你返回 true ,否则返回 false 。

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

输入:grid = [
["a","a","a","a"],
["a","b","b","a"],
["a","b","b","a"],
["a","a","a","a"]]
输出:true
解释:如下图所示,有 2 个用不同颜色标出来的环:

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

输入:grid = [
["c","c","c","a"],
["c","d","c","c"],
["c","c","e","c"],
["f","c","c","c"]]
输出:true
解释:如下图所示,只有高亮所示的一个合法环:

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

输入:grid = [
["a","b","b"],
["b","z","b"],
["b","b","a"]]
输出:false提示:
m == grid.length
n == grid[i].length
1 <= m <= 500
1 <= n <= 500
grid 只包含小写英文字母。

解题:

  • dfs 记录访问标记,以及走过的 steps
class Solution {vector<vector<int>> dir = {{1,0},{0,1},{-1,0},{0,-1}};bool found = false;int m, n;
public:bool containsCycle(vector<vector<char>>& grid) {m = grid.size(), n = grid[0].size();int i, j, k, x, y;vector<vector<bool>> visited(m, vector<bool>(n, false));vector<vector<int>> step(m, vector<int>(n, 0));for(i = 0; i < m; ++i) {for(j = 0; j < n; ++j){if(found) return found;if(visited[i][j])continue;visited[i][j] = true;step[i][j] = 1;//走过的步数dfs(i,j,step,visited,grid);}}return found;}void dfs(int i, int j,vector<vector<int>> &step, vector<vector<bool>> &visited, vector<vector<char>>& grid){int x,y,k;if(found) return;for(k = 0; k < 4; k++){x = i + dir[k][0];y = j + dir[k][1];if(x >= 0 && x < m && y >= 0 && y < n){if(grid[x][y] != grid[i][j])continue;//不相同的值,不行if(!visited[x][y])//没有访问{visited[x][y] = true;step[x][y] = step[i][j]+1;//步数+1dfs(x, y, step, visited, grid);}else{	//访问过了,且当前步数跟其步数差满足条件if(step[i][j]-step[x][y]+1 >= 4){found = true;return;}}}}}
};

724 ms 100.8 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

Apache Commons IO: 简化文件和IO操作

第1章&#xff1a;引言 咱们在做Java编程的时候&#xff0c;经常会遇到各种文件操作和输入输出&#xff08;IO&#xff09;的问题。不论是读取一个配置文件&#xff0c;还是把数据写入日志&#xff0c;这些看似简单的任务有时候会让人头疼。传统的Java IO操作&#xff0c;虽然…

LeetCode 1560. 圆形赛道上经过次数最多的扇区

文章目录1. 题目2. 解题2.1 模拟2.2 脑筋急转弯1. 题目 给你一个整数 n 和一个整数数组 rounds 。有一条圆形赛道由 n 个扇区组成&#xff0c;扇区编号从 1 到 n 。 现将在这条赛道上举办一场马拉松比赛&#xff0c;该马拉松全程由 m 个阶段组成。其中&#xff0c;第 i 个阶段…

如何用jar命令对java工程进行打包

如何用jar命令对java工程进行打包有时候为了更方便快捷的部署和执行Java程序&#xff0c;要把java应用程序打包成一个jar包。而这个基础的操作有时候也很麻烦&#xff0c;为了方便java程序员们能够方便的打包java应用程序&#xff0c;下面对jar命令进行介绍&#xff0c;并举出几…

Android 行程APP简单介绍

登录模块 数据库设计如图所示创建了如上的数据库由于没有注册功能人为添加了两个用户&#xff1a; 数据库创建语句&#xff1a; public static final String CREATE_task "create table user (" "id integer primary key autoincrement, ""remenber…

LeetCode 1561. 你可以获得的最大硬币数目

文章目录1. 题目2. 解题1. 题目 有 3n 堆数目不一的硬币&#xff0c;你和你的朋友们打算按以下方式分硬币&#xff1a; 每一轮中&#xff0c;你将会选出 任意 3 堆硬币&#xff08;不一定连续&#xff09;。Alice 将会取走硬币数量最多的那一堆。你将会取走硬币数量第二多的那…

微信小程序 地图组件使用

本地图程序利用map组件&#xff0c;以及使用它的markers,polyline属性分别设置地图两个位置的标志以及他们之间的连线&#xff0c;利用腾讯地图的API对两个地点进行查询&#xff0c;动态设置地图的经纬度&#xff0c;以及动态初始化markers,polyline属性。 程序运行截图如下&a…

LeetCode 1562. 查找大小为 M 的最新分组

文章目录1. 题目2. 解题1. 题目 给你一个数组 arr &#xff0c;该数组表示一个从 1 到 n 的数字排列。有一个长度为 n 的二进制字符串&#xff0c;该字符串上的所有位最初都设置为 0 。 在从 1 到 n 的每个步骤 i 中&#xff08;假设二进制字符串和 arr 都是从 1 开始索引的情…

DurOS语音开发

DuerOS语音开发项目&#xff0c;该项目通过搭载DuerOS开发者平台&#xff0c;利用平台开发的一组API规范&#xff0c;实现实时的语音播报功能。 整体流程示意图&#xff1a; 所用设备&#xff1a;树莓派微机系统、arduino与74HC595单片机、地图彩灯控制沙盘、小度语音。 数据流…

LeetCode 1563. 石子游戏 V(DP)

文章目录1. 题目2. 解题2.1 区间DP1. 题目 几块石子 排成一行 &#xff0c;每块石子都有一个关联值&#xff0c;关联值为整数&#xff0c;由数组 stoneValue 给出。 游戏中的每一轮&#xff1a; Alice 会将这行石子分成两个 非空行&#xff08;即&#xff0c;左侧行和右侧行…

个人简历小程序

为了熟练掌握微信小程序开发的一些基本技巧&#xff0c;熟悉微信小程序开发流程&#xff0c;特此&#xff0c;运用所学知识&#xff0c;做了一个个人简历小程序。 效果图如下&#xff1a; 代码如下&#xff1a; ① index.jsconst app getApp() Page({ data: { userInfo: {}…

Android的Fragment介绍

前言 fragment是从android3.0开始提出来的&#xff0c;用来支持大屏幕设备的ui设计。通过将activity划分为多个fragment&#xff0c;不仅提高了设计的灵活性&#xff0c;而且可以在程序运行时改变它们的特征&#xff0c;比如动态的修改&#xff0c;替换已有的fragment等等。 fr…

[Kaggle] Heart Disease Prediction

文章目录1. 数据探索2. 特征处理管道3. 训练模型4. 预测kaggle项目地址1. 数据探索 import pandas as pd train pd.read_csv(./train.csv) test pd.read_csv(./test.csv)train.info() test.info() abs(train.corr()[target]).sort_values(ascendingFalse)<class pandas.c…

01.神经网络和深度学习 W2.神经网络基础

文章目录1. 二分类2. 逻辑回归3. 逻辑回归损失函数4. 梯度下降5. 导数6. 计算图导数计算7. 逻辑回归中的梯度下降8. m个样本的梯度下降9. 向量化10. 向量化的更多例子11. 向量化 logistic 回归12. 向量化 logistic 回归梯度输出13. numpy 广播机制14. 关于 python / numpy 向量…

Oracle数据库物理存储结构管理遇到的问题与解决

问题一&#xff1a;当我创建一个重做日志文件放入重做日志文件组中的时候&#xff0c;查询数据字典发现新创建的重做日志文件的状态为“不合法”。 解决方案&#xff1a; 通过查阅相关资料了解到 新建的重做日志文件组成员状态为INVALID,这是由于新建的成员文件还没有被…

01.神经网络和深度学习 W3.浅层神经网络

文章目录1. 神经网络概览2. 神经网络的表示3. 神经网络的输出4. 多样本向量化5. 激活函数6. 为什么需要 非线性激活函数7. 激活函数的导数8. 随机初始化作业参考&#xff1a; 吴恩达视频课 深度学习笔记 1. 神经网络概览 xW[1]b[1]}⟹z[1]W[1]xb[1]⟹a[1]σ(z[1])\left.\begin…

01.神经网络和深度学习 W2.神经网络基础(作业:逻辑回归 图片识别)

文章目录编程题 11. numpy 基本函数1.1 编写 sigmoid 函数1.2 编写 sigmoid 函数的导数1.3 reshape操作1.4 标准化1.5 广播机制2. 向量化2.1 L1\L2损失函数编程题 2. 图片&#x1f431;识别1. 导入包2. 数据预览3. 算法的一般结构4. 建立算法4.1 辅助函数4.2 初始化参数4.3 前向…

PL/SQL程序设计以及安全管理实验遇到的问题及解决

问题一&#xff1a;当我书写PL/SQL语句调用所创建的函数时&#xff0c;报“此范围不存在名为XXX函数名”的错误。 解决&#xff1a; 我通过查阅相关资料&#xff0c;了解到&#xff1a;这种情况主要是调用的函数的参数或者函数名书写错误&#xff0c; 然而&#xff0c;我经过仔…

PowerDesigner使用教程 —— 概念数据模型 (转)

一、概念数据模型概述 概念数据模型也称信息模型&#xff0c;它以实体&#xff0d;联系(Entity-RelationShip,简称E-R)理论为基础&#xff0c;并对这一理论进行了扩充。它从用户的观点出发对信息进行建模&#xff0c;主要用于数据库的概念级设计。 通常人们先将现实世界抽…