算法实例
文章平均质量分 59
算法实例
hyk今天写算法了吗
西南大学计科专业学硕,欢迎各位相互学习交流。
展开
-
2022年「博客之星」参赛博主:hyk今天写算法了吗
我正在参加年度博客之星评选,请大家帮我投票打分,您的每一分都是对我的支持与鼓励。原创 2022-12-28 21:16:17 · 1384 阅读 · 2 评论 -
LeetCode每日一题——1827. 最少操作使数组递增
给你一个整数数组 nums (下标从 0 开始)。每一次操作中,你可以选择数组中一个元素,并将它增加 1 。比方说,如果 nums = [1,2,3] ,你可以选择增加 nums[1] 得到 nums = [1,3,3] 。请你返回使 nums 严格递增 的 最少 操作次数。我们称数组 nums 是 严格递增的 ,当它满足对于所有的 0原创 2022-12-11 11:12:19 · 1662 阅读 · 1 评论 -
LeetCode每日一题——1691. 堆叠长方体的最大高度
给你 n 个长方体 cuboids ,其中第 i 个长方体的长宽高表示为 cuboids[i] = [widthi, lengthi, heighti](下标从 0 开始)。请你从 cuboids 选出一个 子集 ,并将它们堆叠起来。如果 widthi原创 2022-12-10 10:27:25 · 1727 阅读 · 0 评论 -
LeetCode每日一题——1780. 判断一个数字是否可以表示成三的幂的和
给你一个整数 n ,如果你可以将 n 表示成若干个不同的三的幂之和,请你返回 true ,否则请返回 false 。对于一个整数 y ,如果存在整数 x 满足 y == 3x ,我们称这个整数 y 是三的幂。原创 2022-12-09 09:48:32 · 1499 阅读 · 2 评论 -
LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色
给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。原创 2022-12-08 09:33:02 · 1445 阅读 · 0 评论 -
LeetCode每日一题——1775. 通过最少操作次数使数组的和相等
给你两个长度可能不等的整数数组 nums1 和 nums2 。两个数组中的所有值都在 1 到 6 之间(包含 1 和 6)。每次操作中,你可以选择 任意 数组中的任意一个整数,将它变成 1 到 6 之间 任意 的值(包含 1 和 6)。请你返回使 nums1 中所有数的和与 nums2 中所有数的和相等的最少操作次数。如果无法使两个数组的和相等,请返回 -1 。原创 2022-12-07 11:20:46 · 1480 阅读 · 0 评论 -
LeetCode每日一题——1805. 字符串中不同整数的数目
给你一个字符串 word ,该字符串由数字和小写英文字母组成。请你用空格替换每个不是数字的字符。例如,"a123bc34d8ef34" 将会变成 " 123 34 8 34" 。注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):"123"、"34"、"8" 和 "34" 。返回对 word 完成替换后形成的 不同 整数的数目。只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数也不同。原创 2022-12-06 10:57:39 · 1915 阅读 · 0 评论 -
LeetCode每日一题——1687. 从仓库到码头运输箱子
你有一辆货运卡车,你需要用这一辆车把一些箱子从仓库运送到码头。这辆卡车每次运输有 箱子数目的限制 和 总重量的限制 。给你一个箱子数组 boxes 和三个整数 portsCount, maxBoxes 和 maxWeight ,其中 boxes[i] = [portsi, weighti] 。portsi 表示第 i 个箱子需要送达的码头, weightsi 是第 i 个箱子的重量。portsCount 是码头的数目。maxBoxes 和 maxWeight 分别是卡车每趟运输箱子数目原创 2022-12-05 10:49:58 · 1394 阅读 · 0 评论 -
LeetCode每日一题——1774. 最接近目标价格的甜点成本
你打算做甜点,现在需要购买配料。目前共有 n 种冰激凌基料和 m 种配料可供选购。而制作甜点需要遵循以下几条规则:必须选择 一种 冰激凌基料。可以添加 一种或多种 配料,也可以不添加任何配料。每种类型的配料 最多两份 。给你以下三个输入:baseCosts ,一个长度为 n 的整数数组,其中每个 baseCosts[i] 表示第 i 种冰激凌基料的价格。toppingCosts,一个长度为 m 的整数数组,其中每个 toppingCosts[i] 表示 一份 第 i 种冰激凌配料的价格。t原创 2022-12-04 10:44:34 · 1393 阅读 · 0 评论 -
LeetCode每日一题——1796. 字符串中第二大的数字
给你一个混合字符串 s ,请你返回 s 中 第二大 的数字,如果不存在第二大的数字,请你返回 -1 。混合字符串 由小写英文字母和数字组成。原创 2022-12-03 09:42:35 · 2486 阅读 · 0 评论 -
LeetCode每日一题——1769. 移动所有球到每个盒子所需的最小操作数
有 n 个盒子。给你一个长度为 n 的二进制字符串 boxes ,其中 boxes[i] 的值为 '0' 表示第 i 个盒子是 空 的,而 boxes[i] 的值为 '1' 表示盒子里有 一个 小球。在一步操作中,你可以将 一个 小球从某个盒子移动到一个与之相邻的盒子中。第 i 个盒子和第 j 个盒子相邻需满足 abs(i - j) == 1 。注意,操作执行后,某些盒子中可能会存在不止一个小球。返回一个长度为 n 的数组 answer ,其中 answer[i] 是将所有小球移动到第 i 个盒子所原创 2022-12-02 11:06:43 · 1477 阅读 · 0 评论 -
LeetCode每日一题——1779. 找到最近的有相同 X 或 Y 坐标的点
给你两个整数 x 和 y ,表示你在一个笛卡尔坐标系下的 (x, y) 处。同时,在同一个坐标系下给你一个数组 points ,其中 points[i] = [ai, bi] 表示在 (ai, bi) 处有一个点。当一个点与你所在的位置有相同的 x 坐标或者相同的 y 坐标时,我们称这个点是 有效的 。请返回距离你当前位置 曼哈顿距离 最近的 有效 点的下标(下标从 0 开始)。如果有多个最近的有效点,请返回下标 最小 的一个。如果没有有效点,请返回 -1 。两个点 (x1, y1) 和 (x2,原创 2022-12-01 10:36:24 · 1255 阅读 · 0 评论 -
LeetCode每日一题——895. 最大频率栈
设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。实现 FreqStack 类:FreqStack() 构造一个空的堆栈。void push(int val) 将一个整数 val 压入栈顶。int pop() 删除并返回堆栈中出现频率最高的元素。如果出现频率最高的元素不只一个,则移除并返回最接近栈顶的元素。原创 2022-11-30 12:34:05 · 1997 阅读 · 0 评论 -
LeetCode每日一题——1758. 生成交替二进制字符串的最少操作数
给你一个仅由字符 '0' 和 '1' 组成的字符串 s 。一步操作中,你可以将任一 '0' 变成 '1' ,或者将 '1' 变成 '0' 。交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况,那么该字符串就是交替字符串。例如,字符串 "010" 是交替字符串,而字符串 "0100" 不是。返回使 s 变成 交替字符串 所需的 最少 操作数。原创 2022-11-29 10:45:38 · 1803 阅读 · 0 评论 -
LeetCode每日一题——813. 最大平均值和的分组
给定数组 nums 和一个整数 k 。我们将给定的数组 nums 分成 最多 k 个相邻的非空子数组 。 分数 由每个子数组内的平均值的总和构成。注意我们必须使用 nums 数组中的每一个数进行分组,并且分数不一定需要是整数。返回我们所能得到的最大 分数 是多少。答案误差在 10-6 内被视为是正确的。原创 2022-11-28 12:53:54 · 1612 阅读 · 0 评论 -
LeetCode每日一题——1752. 检查数组是否经排序和轮转得到
给你一个数组 nums 。nums 的源数组中,所有元素与 nums 相同,但按非递减顺序排列。如果 nums 能够由源数组轮转若干位置(包括 0 个位置)得到,则返回 true ;否则,返回 false 。源数组中可能存在 重复项 。注意:我们称数组 A 在轮转 x 个位置后得到长度相同的数组 B ,当它们满足 A[i] == B[(i+x) % A.length] ,其中 % 为取余运算。原创 2022-11-27 19:09:09 · 1937 阅读 · 1 评论 -
LeetCode每日一题——882. 细分图中的可到达节点
给你一个无向图(原始图),图中有 n 个节点,编号从 0 到 n - 1 。你决定将图中的每条边 细分 为一条节点链,每条边之间的新节点数各不相同。图用由边组成的二维数组 edges 表示,其中 edges[i] = [ui, vi, cnti] 表示原始图中节点 ui 和 vi 之间存在一条边,cnti 是将边 细分 后的新节点总数。注意,cnti == 0 表示边不可细分。要 细分 边 [ui, vi] ,需要将其替换为 (cnti + 1) 条新边,和 cnti 个新节点。新节点为 x1, x原创 2022-11-26 11:19:47 · 1288 阅读 · 0 评论 -
LeetCode每日一题——809. 情感丰富的文字
有时候人们会用重复写一些字母来表示额外的感受,比如 "hello" -> "heeellooo", "hi" -> "hiii"。我们将相邻字母都相同的一串字符定义为相同字母组,例如:"h", "eee", "ll", "ooo"。对于一个给定的字符串 S ,如果另一个单词能够通过将一些字母组扩张从而使其和 S 相同,我们将这个单词定义为可扩张的(stretchy)。扩张操作定义如下:选择一个字母组(包含字母 c ),然后往其中添加相同的字母 c 使其长度达到 3 或以上。例如,以 "hello"原创 2022-11-25 12:58:42 · 1305 阅读 · 0 评论 -
LeetCode每日一题——795. 区间子数组个数
给你一个整数数组 nums 和两个整数:left 及 right 。找出 nums 中连续、非空且其中最大元素在范围 [left, right] 内的子数组,并返回满足条件的子数组的个数。生成的测试用例保证结果符合 32-bit 整数范围。原创 2022-11-24 12:38:32 · 1754 阅读 · 0 评论 -
LeetCode每日一题——1742. 盒子中小球的最大数量
你在一家生产小球的玩具厂工作,有 n 个小球,编号从 lowLimit 开始,到 highLimit 结束(包括 lowLimit 和 highLimit ,即 n == highLimit - lowLimit + 1)。另有无限数量的盒子,编号从 1 到 infinity 。你的工作是将每个小球放入盒子中,其中盒子的编号应当等于小球编号上每位数字的和。例如,编号 321 的小球应当放入编号 3 + 2 + 1 = 6 的盒子,而编号 10 的小球应当放入编号 1 + 0 = 1 的盒子。给你两个原创 2022-11-23 10:43:24 · 227 阅读 · 0 评论 -
LeetCode每日一题——878. 第 N 个神奇数字
一个正整数如果能被 a 或 b 整除,那么它是神奇的。给定三个整数 n , a , b ,返回第 n 个神奇的数字。因为答案可能很大,所以返回答案 对 109 + 7 取模 后的值。原创 2022-11-22 12:32:17 · 316 阅读 · 0 评论 -
LeetCode每日一题——808. 分汤
有 A 和 B 两种类型 的汤。一开始每种类型的汤有 n 毫升。有四种分配操作:提供 100ml 的 汤A 和 0ml 的 汤B 。提供 75ml 的 汤A 和 25ml 的 汤B 。提供 50ml 的 汤A 和 50ml 的 汤B 。提供 25ml 的 汤A 和 75ml 的 汤B 。当我们把汤分配给某人之后,汤就没有了。每个回合,我们将从四种概率同为 0.25 的操作中进行分配选择。如果汤的剩余量不足以完成某次操作,我们将尽可能分配。当两种类型的汤都分配完时,停止操作。注意 不存在先分配原创 2022-11-21 11:10:30 · 380 阅读 · 0 评论 -
LeetCode每日一题——799. 香槟塔
现在当倾倒了非负整数杯香槟后,返回第 i 行 j 个玻璃杯所盛放的香槟占玻璃杯容积的比例( i 和 j 都从0开始)。原创 2022-11-20 10:41:56 · 145 阅读 · 0 评论 -
LeetCode每日一题——1732. 找到最高海拔
有一个自行车手打算进行一场公路骑行,这条路线总共由 n + 1 个不同海拔的点组成。自行车手从海拔为 0 的点 0 开始骑行。给你一个长度为 n 的整数数组 gain ,其中 gain[i] 是点 i 和点 i + 1 的 净海拔高度差(0原创 2022-11-19 11:41:21 · 673 阅读 · 0 评论 -
LeetCode每日一题——891. 子序列宽度之和
一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。给你一个整数数组 nums ,返回 nums 的所有非空 子序列 的 宽度之和 。由于答案可能非常大,请返回对 109 + 7 取余 后的结果。子序列 定义为从一个数组里删除一些(或者不删除)元素,但不改变剩下元素的顺序得到的数组。例如,[3,6,2,7] 就是数组 [0,3,1,6,2,2,7] 的一个子序列。原创 2022-11-18 13:52:16 · 584 阅读 · 0 评论 -
LeetCode每日一题——792. 匹配子序列的单词数
给定字符串 s 和字符串数组 words, 返回 words[i] 中是s的子序列的单词个数 。字符串的 子序列 是从原始字符串中生成的新字符串,可以从中删去一些字符(可以是none),而不改变其余字符的相对顺序。例如, “ace” 是 “abcde” 的子序列。原创 2022-11-17 11:03:21 · 605 阅读 · 0 评论 -
LeetCode每日一题——775. 全局倒置与局部倒置
给你一个长度为 n 的整数数组 nums ,表示由范围 [0, n - 1] 内所有整数组成的一个排列。全局倒置 的数目等于满足下述条件不同下标对 (i, j) 的数目:0 nums[j]局部倒置 的数目等于满足下述条件的下标 i 的数目:0 nums[i + 1]当数组 nums 中 全局倒置 的数量等于 局部倒置 的数量时,返回 true ;否则,返回 false原创 2022-11-16 17:15:52 · 160 阅读 · 0 评论 -
LeetCode每日一题——1710. 卡车上的最大单元数
请你将一些箱子装在 一辆卡车 上。给你一个二维数组 boxTypes ,其中 boxTypes[i] = [numberOfBoxesi, numberOfUnitsPerBoxi] :numberOfBoxesi 是类型 i 的箱子的数量。numberOfUnitsPerBoxi 是类型 i 每个箱子可以装载的单元数量。整数 truckSize 表示卡车上可以装载 箱子 的 最大数量 。只要箱子数量不超过 truckSize ,你就可以选择任意箱子装到卡车上。返回卡车可以装载 单元 的 最大原创 2022-11-15 11:05:28 · 193 阅读 · 0 评论 -
LeetCode每日一题——805. 数组的均值分割
给定你一个整数数组 nums我们要将 nums 数组中的每个元素移动到 A 数组 或者 B 数组中,使得 A 数组和 B 数组不为空,并且 average(A) == average(B) 。如果可以完成则返回true , 否则返回 false 。注意:对于数组 arr , average(arr) 是 arr 的所有元素的和除以 arr 长度。原创 2022-11-14 15:13:23 · 403 阅读 · 0 评论 -
LeetCode每日一题——791. 自定义字符串排序
给定两个字符串 order 和 s 。order 的所有单词都是 唯一 的,并且以前按照一些自定义的顺序排序。对 s 的字符进行置换,使其与排序的 order 相匹配。更具体地说,如果在 order 中的字符 x 出现字符 y 之前,那么在排列后的字符串中, x 也应该出现在 y 之前。返回 满足这个性质的 s 的任意排列 。原创 2022-11-13 13:54:37 · 507 阅读 · 0 评论 -
LeetCode每日一题——790. 多米诺和托米诺平铺
有两种形状的瓷砖:一种是 2 x 1 的多米诺形,另一种是形如 "L" 的托米诺形。两种形状都可以旋转。给定整数 n ,返回可以平铺 2 x n 的面板的方法的数量。返回对 109 + 7 取模 的值。平铺指的是每个正方形都必须有瓷砖覆盖。两个平铺不同,当且仅当面板上有四个方向上的相邻单元中的两个,使得恰好有一个平铺有一个瓷砖占据两个正方形。原创 2022-11-12 11:56:48 · 267 阅读 · 0 评论 -
LeetCode每日一题——1704. 判断字符串的两半是否相似
给你一个偶数长度的字符串 s 。将其拆分成长度相同的两半,前一半为 a ,后一半为 b 。两个字符串 相似 的前提是它们都含有相同数目的元音('a','e','i','o','u','A','E','I','O','U')。注意,s 可能同时含有大写和小写字母。如果 a 和 b 相似,返回 true ;否则,返回 false 。原创 2022-11-11 12:06:03 · 756 阅读 · 0 评论 -
LeetCode每日一题——864. 获取所有钥匙的最短路径
给定一个二维网格 grid ,其中:'.' 代表一个空房间'#' 代表一堵'@' 是起点小写字母代表钥匙大写字母代表锁我们从起点开始出发,一次移动是指向四个基本方向之一行走一个单位空间。我们不能在网格外面行走,也无法穿过一堵墙。如果途经一个钥匙,我们就把它捡起来。除非我们手里有对应的钥匙,否则无法通过锁。假设 k 为 钥匙/锁 的个数,且满足 1原创 2022-11-10 17:07:54 · 225 阅读 · 0 评论 -
LeetCode每日一题——764. 最大加号标志
在一个 n x n 的矩阵 grid 中,除了在数组 mines 中给出的元素为 0,其他每个元素都为 1。mines[i] = [xi, yi]表示 grid[xi][yi] == 0返回 grid 中包含 1 的最大的 轴对齐 加号标志的阶数 。如果未找到加号标志,则返回 0 。一个 k 阶由 1 组成的 “轴对称”加号标志 具有中心网格 grid[r][c] == 1 ,以及4个从中心向上、向下、向左、向右延伸,长度为 k-1,由 1 组成的臂。注意,只有加号标志的所有网格要求为 1 ,别的原创 2022-11-09 17:19:20 · 542 阅读 · 0 评论 -
LeetCode每日一题——1684. 统计一致字符串的数目
给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。如果一个字符串的每一个字符都在 allowed 中,就称这个字符串是 一致字符串 。请你返回 words 数组中 一致字符串 的数目。原创 2022-11-08 09:43:55 · 260 阅读 · 0 评论 -
LeetCode每日一题——816. 模糊坐标
我们有一些二维坐标,如 "(1, 3)" 或 "(2, 0.5)",然后我们移除所有逗号,小数点和空格,得到一个字符串S。返回所有可能的原始字符串到一个列表中。原始的坐标表示法不会存在多余的零,所以不会出现类似于"00", "0.0", "0.00", "1.0", "001", "00.01"或一些其他更小的数来表示坐标。此外,一个小数点前至少存在一个数,所以也不会出现“.1”形式的数字。最后返回的列表可以是任意顺序的。而且注意返回的两个数字中间(逗号之后)都有一个空格。原创 2022-11-07 10:32:53 · 98 阅读 · 0 评论 -
LeetCode每日一题——1678. 设计 Goal 解析器
请你设计一个可以解释字符串 command 的 Goal 解析器 。command 由 "G"、"()" 和/或 "(al)" 按某种顺序组成。Goal 解析器会将 "G" 解释为字符串 "G"、"()" 解释为字符串 "o" ,"(al)" 解释为字符串 "al" 。然后,按原顺序将经解释得到的字符串连接成一个字符串。给你字符串 command ,返回 Goal 解析器 对 command 的解释结果。原创 2022-11-06 17:18:44 · 495 阅读 · 0 评论 -
LeetCode每日一题——1106. 解析布尔表达式
给你一个以字符串形式表述的 布尔表达式(boolean) expression,返回该式的运算结果。有效的表达式需遵循以下约定:"t",运算结果为 True"f",运算结果为 False"!(expr)",运算过程为对内部表达式 expr 进行逻辑 非的运算(NOT)"&(expr1,expr2,...)",运算过程为对 2 个或以上内部表达式 expr1, expr2, ... 进行逻辑 与的运算(AND)"|(expr1,expr2,...)",运算过程为对 2 个或以上内部表达式 ex原创 2022-11-05 11:27:35 · 183 阅读 · 0 评论 -
LeetCode每日一题——754. 到达终点数字
在一根无限长的数轴上,你站在0的位置。终点在target的位置。你可以做一些数量的移动 numMoves :每次你可以选择向左或向右移动。第 i 次移动(从 i == 1 开始,到 i == numMoves ),在选择的方向上走 i 步。给定整数 target ,返回 到达目标所需的 最小 移动次数(即最小 numMoves ) 。原创 2022-11-04 15:54:18 · 562 阅读 · 0 评论 -
LeetCode每日一题——1668. 最大重复子字符串
给你一个字符串 sequence ,如果字符串 word 连续重复 k 次形成的字符串是 sequence 的一个子字符串,那么单词 word 的 重复值为 k 。单词 word 的 最大重复值 是单词 word 在 sequence 中最大的重复值。如果 word 不是 sequence 的子串,那么重复值 k 为 0 。给你一个字符串 sequence 和 word ,请你返回 最大重复值 k 。原创 2022-11-03 09:20:50 · 295 阅读 · 0 评论