自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(107)
  • 收藏
  • 关注

原创 299. 猜数字游戏 Python

中找出所有字符相同且位置也相同的字符的总数量作为“A”的值;2. 从除了“A”中用到的字符以外的剩余字符中找出。写出一个秘密数字,并请朋友猜这个数字是多少。请注意秘密数字和朋友猜测的数字都可能含有重复数字。本题主要是题意难以理解,实际问题是,1. 从。字符中的数量,这里需要说明的是,当前的。,请你返回对朋友这次猜测的提示。中,则令“B”的值加1并删除在。

2023-10-24 11:30:00 227

原创 289. 生命游戏 Python

本题解题思路是遍历board中每一个元素,判断该元素的四周(8个位置)处的活细胞个数,然后根据当前活细胞个数来确定是否更改当前细胞的状态。需要注意的点在于,由于题意中给出这些细胞的出生和死亡是同时发生的,所以表示所有细胞的改变都需要根据最开始board中的情况来进行,所以最开始时需要复制board来作为后面的判断标准。下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。个格子的面板,每一个格子都可以看成是一个细胞。的当前状态,返回下一个状态。

2023-10-19 11:30:00 286

原创 287. 寻找重复数 Python

的额外空间,所以采用空间换效率的方法不太适合,采用先排序后查找的方法也不满足条件。但是由于本题中题意给出的条件是数组中的每一个元素肯定是属于。本题要求查找数组中重复的那个数,由于题意要求不能修改数组且只能使用常量级。的选取就是二分查找中的中间值。),可知至少存在一个重复的整数。,说明找到了重复的数,返回。你设计的解决方案必须。,统计数组中小于等于。,说明重复数字一定在。,说明重复数字一定在。

2023-10-17 11:05:56 405

原创 275. H 指数 II Python

h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (n 篇论文中)本题解的大致思路为采用二分查找的方法去寻找符合条件的最大h指数,尽可能缩小寻找h指数的次数以满足题意。之间寻找一个最大的整数满足h指数的定义,这一寻找过程可以使用二分查找的方式进行查找。请你设计并实现对数时间复杂度的算法解决此问题。计算并返回该研究者的 h 指数。有 h 篇论文分别被引用了。篇论文被引用的次数,

2023-10-12 11:15:00 237

原创 274. H 指数 Python

指数从大到小挨个判断的方式寻找最大的h指数。篇论文被引用的次数。计算并返回该研究者的。代表“高引用次数” ,一名科研人员的。指数,关于h指数的定义题中已明确,因为。指数减一,重复①、②操作直到找出为止。指数,则满足条件,返回当前的。是指他(她)至少发表了。),如果结果大于等于当前的。篇论文,并且每篇论文。的长度,所以本题解采用将。中的每一个元素减去当前的。中有多少个元素是大于等于。

2023-10-10 11:30:00 130

原创 264. 丑数 II Python

本题考验对于“丑数”的定义及计算,丑数是只包含因子 2、3 和 5 的正整数,1为最小的丑数。本题要求找出指定位置的丑数是什么。关于丑数的计算主要需要考虑的是丑数的顺序,本题解的思路为每次为丑数序列中添加一个当前序列生成的丑数中的最小值,重复多次,直到丑数序列满足长度为n即可。丑数实际上可以通过正整数乘2或3或5生成,我们每次只需要判断当前序列中生成的最小丑数是谁即可,将其加入当前序列,重复以上过程。给你一个整数 n ,请你找出并返回第。

2023-09-29 16:21:45 141

原创 241. 为运算表达式设计优先级 Python

本题实际考验字符串中所有运算符的先后运算顺序,有多少个运算符,就有多少个对应数量的全排列结果。所以本题解采用递归的思想,通过字符串中所有的运算符运算的不同先后顺序来计算结果,将运算符左边和右边的表达式再分别进行递归操作,实现所有可能的运算结果,其中,使用eval()函数将字符串形式的表达式计算其结果。生成的测试用例满足其对应输出值符合 32 位整数范围,不同结果的数量不超过 10。,按不同优先级组合数字和运算符,计算并返回所有可能组合的结果。给你一个由数字和运算符组成的字符串。

2023-09-27 12:55:50 87

原创 240. 搜索二维矩阵 II Python

本题是对于特殊矩阵的遍历操作,由于该矩阵的每一行和每一列都满足升序,则可以先遍历行来找出目标值可能的存在的行数,然后再到行里面具体寻找每一列是否存在目标值,如果出现当前值已经比目标值大的情况,则表示后面的序列都不可能出现目标值了,直接结束当前循环;如果找到目标值,则立刻停止遍历,返回结果即可。矩阵 matrix 中的一个目标值。编写一个高效的算法来搜索。

2023-09-21 13:47:01 375

原创 236. 二叉树的最近公共祖先 Python

的基础上将二叉搜索树改为二叉树,那么根据我们之前搜索p,q节点的所有父节点的思路来看,搜索方式有所不同,不能通过二叉搜索树的规律来快速找到对应p,q节点,但也可以通过一步一步试错的方式慢慢找到所有的父节点,解题思路同。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大**(一个节点也可以是它自己的祖先)**。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

2023-09-19 10:39:23 313

原创 235. 二叉搜索树的最近公共祖先 Python

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(的所有父节点的列表,开始从头寻找这2个列表的公共最大子列表,找到其公共最大子列表后,返回其最后一位节点即可。本题需要寻找的是某2个节点的公共父节点(该父节点也可能是节点本身),所以本题的解题思路为找出。所有父节点思路为:从二叉树搜索树的根开始往下找,记录下当前的节点作为其父节点,然后根据。节点一定在数中存在且唯一,所以找到该节点的父节点路径仅有1条)

2023-09-14 10:36:04 205

原创 230. 二叉搜索树中第K小的元素 Python

本题实际上是对二叉搜索树进行类似于中序遍历的遍历,二叉树搜索树的节点大小始终满足:中间节点元素始终大于节点左侧的元素,中间节点元素始终小于右侧节点元素。按照这个规律,将二叉搜索树的节点按照升序的顺序挨个遍历,最后能得到一个已排好序的数组,然后输出对应的位置的第k个最小的元素即可。,请你设计一个算法查找其中第。给定一个二叉搜索树的根节点。

2023-09-12 10:16:29 127

原创 229. 多数元素 II Python

方法获取出现次数,重复遍历所有元素,将符合重复次数的元素添加进入结果数组中即可。需要注意的是,不能将重复出现的元素添加进入数组中,需要进行一个去重的操作。本题解题思路主要是判断元素中在数组出现的次数,可以使用python中的。的整数数组,找出其中所有出现超过。

2023-09-07 14:57:00 313

原创 227. 基本计算器 II Python

① 因为涉及到字符可能会出现2位数及其以上的情况,如果之间转化为后缀表达式,则会导致数字连接到一块,所以需要对数字和运算符进行分隔,将表达式转化为如下格式:“12+4/5” => “12 + 4 / 5”本题解题思路为:将字符串(前缀表达式)转化为后缀表达式,然后通过计算后缀表达式得到结果。③ 计算后缀表达式,找第一个运算符,向左找最近的2个数进行计算,重复这一过程,最后得到一个值返回即可。② 转化为后缀表达式,当遇到2位数及以上的数字时,需要将其看做是一个数,用空格分隔不同数。整数除法仅保留整数部分。

2023-09-05 14:33:13 143

原创 223. 矩形面积 Python

本题解题思路是判断2个矩形是否有重叠部分,通过判断矩阵左下角和右上角的坐标来分析矩阵是否存在重叠,由于重叠的方式有多种,所以判断其不重叠的情况要比判断重叠时的情况方便,通过a矩形左下角坐标与b矩形右上角坐标进行判断能够快速知道不重叠时的情况。如果重叠了,则需要单独判断重叠部分矩形的左下角坐标和右上角坐标,坐标的选取要符合在重叠区域内的条件。最后单独计算出重叠矩阵的大小,最大面积为2个矩形面积相加后减去该重叠矩阵面积。的矩形,请你计算并返回两个矩形覆盖的总面积。如果不重叠,则最大面积则是2个矩形面积相加;

2023-08-30 12:26:42 513

原创 222. 完全二叉树的节点个数 Python

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含。本题考验对于二叉树的遍历操作,在遍历节点时需要计数,采用最普通的遍历操作即可满足题意。,求出该树的节点个数。

2023-08-29 10:45:00 114

原创 221. 最大正方形 Python

本题考验的对于数组的遍历判断操作,需要我们找出由1构成的最大的正方形面积。本题解采用动态规划的方法,由于当前所判断的结果对于之后的判断也有用上,所以使用动态规划的方法较好,如果采用暴力遍历的方式的话,则会导致运算超时。不为0,则以上这4个点可以构成一个更大的正方形;最后在每次进行更新操作时,记录下当前更新后的最大值,返回其平方数即可。以当前的坐标[i][j]为例,需要判断的是当前坐标的。则需要进行更新,更新方式为:选取其左、上、左上。如果能够构成更大的正方形,则当前坐标。,如果是,并且当前坐标。

2023-08-24 16:31:43 226

原创 216. 组合总和 III Python

自然数之间的组合问题,由于所需要组合的数目并不多,这里直接使用全组合函数。该列表不能包含相同的组合两次,组合可以以任何顺序返回。个数的组合情况,之后通过判断其总和是否等于。,来返回对应的组合。

2023-08-23 16:44:11 178

原创 215. 数组中的第K个最大元素 Python

快速排序是一个不错的选择,本题解则是使用了快速排序进行解题,快排通过设置左右“哨兵”以及基准来进行排序。最后将排序的结果中的倒数第k个元素返回即可。本题是本质是一道排序算法题,但是要求设计并实现时间复杂度为。请注意,你需要找的是数组排序后的第。你必须设计并实现时间复杂度为。个最大的元素,而不是第。

2023-08-22 17:21:16 483 1

原创 213. 打家劫舍 II Python

的基础上添加了房屋是环形排布的条件,实际上也就需要多考虑第一个房屋是否可选的情况,如果第一个房屋被选中,则最后一个房屋则不可选(对应数组范围为。你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果不选择第一个房屋的话,则最后一个房屋可选(对应数组范围为。这就相当于有2种情况,而最大值只会出现在这2种情况之间,在。的基础上讨论以上2种情况,分别求出其最大值,返回最大值即可。,今晚能够偷窃到的最高金额。

2023-08-21 18:02:32 196

原创 210. 课程表 II Python

中即可,表示已经学习了该课程,如果无法学完则直接返回一个空数组。最后如果能够学完全部课程,返回之前记录的。的基础上要求输出具体的课程学习序列,在之前使用入度表的基础上,只需要将每次删除的入度为。返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回。如果不可能完成所有课程,返回。

2023-08-04 18:05:24 228

原创 209. 长度最小的子数组 Python

本题依旧是考虑对于连续子数组的遍历问题,如果采用暴力的遍历方法(双重for循环)则会导致超出时间限制,所以需要再遍历数组时实时优化,采用“滑动窗口”的方法来遍历连续的子数组。,这样做的目的是减少了遍历的次数,同时还能找出最小长度的连续子数组,同样在移动完左坐标后继续重复上述操作。如果当前的坐标内的数组之和大于或等于。已经达到右边界,停止遍历,查看当前长度最短的子数组,返回答案即可。,则可以缩小当前窗口,但是不是移动右坐标,而是向右移动左坐标。,如果小于则需要增大当前的窗口,即右坐标。找出该数组中满足其和。

2023-08-04 11:30:00 203

原创 207. 课程表 Python

本题判断是否能够学完课程,实际上是判断课程学习的前后顺序是否冲突,我们可以将本题中有前后学习关联的课程看做是一个个节点,将它们都放置在一个图上,用箭头来表示其先后学习关系,则该图的。所以本题的解题思路可以转化为:每次学习的目标选择节点入度为0的课程,然后删除该节点(表示已学习该课程),更新图中的节点和入度关系,直到所有节点都被删除,即所有课程都被1学习。我们在学习课程4时需要先学习课程1和课程2。我们可以发现,想要学习完所有课程,则需要找到一定的学习顺序,这个学习顺序需要不违背图中箭头的前后关系。

2023-07-27 16:44:26 259

原创 204. 计数质数 Python

要得到自然数 n 以内的全部质数,必须把不大于 根号n 的所有质数的倍数剔除,剩下的就是质数。本题如果使用暴力的遍历法进行求解,则会导致超时,所以需要改变策略,这里则使用了著名的。的倍数的数,剩下来的数则是质数。,将当前数为质数对应的所有倍数的数全部排除.② 从2开始遍历连续的自然数,右界限为。中的值求和就是所有质数的数量。所以本题的解题思路为排除所有。,返回 所有小于非负整数。,表示排除掉这两个数。

2023-07-25 19:37:41 213

原创 201. 数字范围按位与 Python

文章目录一、题目描述示例 1示例 2示例 3二、代码三、解题思路一、题目描述给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。示例 1输入:left = 5, right = 7输出:4示例 2输入:left = 0, right = 0输出:0示例 3输入:left = 1, right = 2147483647输出:0提示:0 <= left <= ri

2023-07-19 20:03:15 1232

原创 200. 岛屿数量 Python

二维数组去存储已经遍历过的岛屿,在寻找当前岛屿所有的相邻岛屿时,需要考虑上下左右四个方向,每找到一个新的岛屿都会在。数组中进行标记,并且继续判断上下左右四个方向是否还有新的相邻岛屿,其本质是深度遍历。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。(水)组成的的二维网格,请你计算网格中岛屿的数量。本题解题思路为找出所有相连的岛屿,这里单独使用方法。此外,你可以假设该网格的四条边均被水包围。去遍历当前所有相邻的岛屿,使用。

2023-07-18 11:47:00 367

原创 199. 二叉树的右视图 Python

本题实际上是考察二叉树的层序遍历,与二叉树的层序遍历不同的是,本题只需要将每一层的最后一个节点存入即可。关于二叉树的遍历可以参考。,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

2023-07-13 09:30:05 386

原创 198. 打家劫舍 Python

这是一个从前往后的过程,我们在计算出前面房屋的最大值后,可以用于计算后面房屋的最大值,所以此时可以只用一次for循环就能得出最后答案,最后的结果会被累加到数组末尾。本题需要用到动态规划的思想,如果我们使用多重循环遍历的方法得出每一种组合的情况,那么则会导致超出时间;你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,中的最大值,所以我们的解题思路可以是找出当前房屋i对应的最大值。的最大值只可能有1种情况,最大值 = 房屋。

2023-07-11 10:40:36 334

原创 189. 轮转数组 Python

本题题意很简单,实际上需要操作的是将已知数组nums的后k位给挪到nums数组的首部且保证是原地修改。本题解采用切片的方式来移动数组,需要注意的是,如果仅仅使用。的话,则表示已经轮转过一周甚至几周了,需要对其进行一个求余操作才能正确的轮转对应的位置。实际上并没有进行原地修改,这是因为这行代码创建了一个新的列表,将原始数组的后面。个元素与原始数组的所有元素连接起来。然后,将这个新的列表赋值给了变量。,而是创建了一个新的列表对象并将其赋给了同名的变量。的操作并不会影响原始的数组。,将数组中的元素向右轮转。

2023-07-06 12:10:43 425

原创 184. 部门工资最高的员工 SQL

另外,需要注意的是,这里面需要找出每种类别的最大值,如果单纯使用MAX函数的话,则是判断的是全局的数据,这里需要使用分组方法。本题的难点在于引入了2张表且这2张表中有元素是互相关联的,我们需要同时使用2张表里面的信息,这里就需要用到。方法了,将2张表中的相同内容进行联动,这样就能在读取表1时通过表1的内容找到表2中对应的值。,将表中数据按照部门类别进行分组,之后再在每一组中寻找当前组的最大值进行返回。编写SQL查询以查找每个部门中薪资最高的员工。查询结果格式如下例所示。

2023-07-04 20:37:37 213

原创 180. 连续出现的数字 SQL

来保证输出结果的数字不重复,原因在于,如果使用上述方法去判断连续出现4次或4次以上的数字时,则会重复输出该重复的数字。行的值并记录,如果当前行的值=前一行的值=前两行的值,则表示连续出现了三次同样的数字,返回该结果即可。本题主要考验列表的遍历操作,需要能够找到连续的几行对应的值并对其进行判断。编写一个 SQL 查询,查找所有至少连续出现三次的数字。另外,需要注意的是,这里在输出结果时使用了。从表中可以看出,如果当前行的前。返回的结果表中的数据可以按。,对于本题结果来说并不影响。行不存在,则输出结果为。

2023-06-29 16:33:05 1309

原创 178. 分数排名 SQL

则可作用于排好序的列,返回一个稠密的排名,确保相等的分数具有相同的排名,并且没有空缺的排名。编写 SQL 查询对分数进行排序。本题考验对表的读取和处理,关键方法在于降序排序。能够让读取的数据进行降序排序,而窗口函数。查询结果格式如下所示。和稠密排名的窗口函数。

2023-06-28 15:26:31 1209

原创 177. 第N高的薪水 SQL

本题考验SQL语言中对于表的遍历,要查询自定义的第N大的salay,我们则可以以降序的方式查询salary,然后从上往下数输出第N个salary返回即可。方法排除重复的行,避免遇到降序排序中前几个数都是一样大的情况。另外,为了排除输入中重复的行,需要用到。个最高工资,查询应该报告为。编写一个SQL查询来报告。查询结果格式如下所示。大的数对应的行数应该是。

2023-06-22 14:00:00 107

原创 172. 阶乘后的零 Python

方法可以计算大整数的阶乘,但是由于有些结果的位数过长,我们需要将其转化为字符串表示,并且需要设置字符串展示的上限,这里我们通过。本题主要是考验对于大整数阶乘的计算和处理,在。有多少,返回该结果即可。结果中尾随零的数量。方法将字符串上限设置为。,重新计算其长度,用。则表示一共删了多少个。

2023-06-20 13:45:00 75

原创 167. 两数之和 II - 输入有序数组 Python

本题考验对数组的遍历和查询。具体的解题思路是遍历数组,当前的元素为。重复使用相同的元素。”来作为答案),所以上文中才需要要求“非相同坐标”。ps:由于题意中给出要求:“你可以假设每个输入。,请你从数组中找出满足相加之和等于目标数。你所设计的解决方案必须只使用常量级的额外空间。的元素,则说明找到了结果,返回对应的下标即可。如果设这两个数分别是。的形式返回这两个整数的下标。重复使用相同的元素。

2023-06-15 13:15:00 130

原创 166. 分数到小数 Python

对于无限循环小数,采用长除法,每次除法时都记录当前余数并存入余数数组中,如果当前余数已经存在数组中,则表示进入了循环,此时记录下循环部分用于后面表示。,这样一来可以更好展示所有位数的小数(当小数位数过长时,默认会返回科学计数法的小数,所以需要设置展示的位数),但是随之而来的问题是,有限小数的末尾会出现很多无效的。③ 循环遍历字符串格式的小数,找到循环部分位于小数中的部分,用括号+循环部分的形式替换掉所有的循环部分,最后返回结果即可。库考验实现高精度的计算,题意中表明:“对于所有给定的输入,

2023-06-13 14:15:00 617

原创 165. 比较版本号 Python

④遍历数组,遍历次数为长度较短的数组长度(防止溢出);比较每个位置的版本号大小,如果两个版本号不相等的话,则返回对应结果,反之则继续遍历。个数组完全相等,则此时只需要判断数组的长度;数组长度较长的则版本号大,较短的则版本号小,返回对应结果;比较版本号时,请按从左到右的顺序依次比较它们的修订号。如果版本号没有指定某个下标处的修订号,则该修订号视为。版本号由一个或多个修订号组成,各修订号由一个。个数组完全相同,即版本号相同,返回0即可。,是无关判断的,需要删除末尾无效的版本号。的修订号相同,而下标为。

2023-06-07 19:47:51 867

原创 162. 寻找峰值 Python

本题由于要求返回任意一个峰值元素的下标即可,所以可以优先查看开头和结尾元素是否符合峰值元素(题意中假设。,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回。,则最后一个元素也满足峰值的条件,返回对应坐标即可,不用再去遍历数组。如果第一个和最后一个元素都不满足峰值元素条件,则需要遍历数组进行判断。,则第一个元素满足峰值元素条件;同理,如果最后一个元素。峰值元素是指其值严格大于左右相邻值的元素。),即如果第一个元素。

2023-06-06 14:00:00 1028

原创 153. 寻找旋转排序数组中的最小值 Python

它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的。在原本二分查找的基础上,修改右边界的更新值。的数组,预先按照升序排列,经由。你必须设计一个时间复杂度为。本题要求用时间复杂度为。,这是因为中值<右值,而。时,循环结束,最小值输出。

2023-06-01 17:07:57 142

原创 152. 乘积最大子数组 Python

本题解题思路为:遍历所有数组元素,找出遍历到当前i为止的最大值,当遍历到末尾时就能得到当前数组的最大的非空连续子数组的乘积。,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。子数组,需要查看连续的子数组,遍历所有情况容易导致超出时间限制,所以需要采用动态规划的思想进行解题。①从第2个元素开始遍历,找出当前坐标下非空连续子数组能得到最大值和最小值,分别存入。本题题意为找到数组中乘积最大的非空。测试用例的答案是一个。是数组的连续子序列。中的最大值即为结果。

2023-05-29 21:16:05 397

原创 151. 反转字符串中的单词 Python

中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。本题考验对字符串的处理,对于Python语言来说,处理字符串相对容易。④逆序当前列表,适当添加单空格字符,重新构建新的字符串。②删除开头空格和结尾空格(如果存在的话)①循环修改将字符串中所有的双空格字符。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。③用单空格分割字符串为一个列表。

2023-05-25 13:45:00 689 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除