![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
Jason Yien
求道问术
展开
-
leetcode/golang/和大于等于target的连续最短子数组
/** * 剑指 Offer II 008. 和大于等于target的连续最短子数组 * - 元素和>=target * - 元素构成的子序列是连续的 * - 子序列的长度最短 */原创 2023-03-05 19:44:39 · 68 阅读 · 0 评论 -
leetcode/golang/无序数组中和为0的三个数
/** * 剑指 Offer II 007. 无序数组中和为0的三个数 * - 数组元素是无序的 * - 找出所有和为0的三元组 * - 两个三元组中对应位置元素不能相同 */原创 2023-03-05 11:55:08 · 89 阅读 · 0 评论 -
leetcode/golang/从已升序排序数组中寻找两个数,他们的和为target
/** * 二分查找 * 双指针 * 剑指 Offer II 006. 从已升序排序数组中寻找两个数,他们的和为target * - 数组中只有一对符合条件的数字。 * - 同一个数字不能使用两次,已经找遍历过的数字不再使用 */原创 2023-03-04 21:38:25 · 81 阅读 · 0 评论 -
leetcode/golang/不含相同字符的单词的长度的最大乘积
/** * 剑指 Offer II 005. 不含相同字符的单词的长度的最大乘积 * - 给定一个字符串数组words,1个元素1个字符串 * - 计算当两个字符串不包含相同字符时,长度乘积的最大值 * - 字符串中只包含英语的小写字母 */原创 2023-03-03 22:56:40 · 72 阅读 · 0 评论 -
leetcode/golang/只出现一次的数字
/** * 剑指 Offer II 004. 只出现一次的数字 * 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 */原创 2023-03-03 18:03:44 · 85 阅读 · 0 评论 -
leetcode/golang/前n个数字二进制中1的个数
/** * 剑指 Offer II 003. 前n个数字二进制中1的个数 * 给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。 * * 考点: * 发现规律(动态规划) * r&1奇偶特性:r为奇数结果为1,r为偶数结果为0 * r>>1奇偶特性:r为奇数或偶数结果相等,结果都是除以2取整 */原创 2023-03-03 14:32:13 · 83 阅读 · 0 评论 -
leetcode/golang/二进制加法
/** * 剑指 Offer II 002. 二进制加法 * 给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。 * 输入为 非空 字符串且只包含数字 1 和 0。 * 字符串如果不是 "0" ,就都不含前导零。 * * 进制加法: * 二进制逢二进一,商为进位,余数为当前值 */原创 2023-03-02 22:56:53 · 86 阅读 · 0 评论 -
leetcode/golang/整数除法
【代码】leetcode/golang/整数除法。原创 2023-02-27 21:22:17 · 134 阅读 · 0 评论 -
leetcode/最长连续序列,不要求在原序列中有序
/** * 剑指 Offer II 119. 最长连续序列,不要求在原序列中有序 * 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 * 分析:在nums中大1的最长序列,不要求在nums中大1的数字是连续的 */原创 2022-10-11 09:29:49 · 97 阅读 · 0 评论 -
leetcode/多余的边,树被多加上一条边,去掉导致环的最后一条边
/** * 剑指 Offer II 118. 多余的边,树被多加上一条边,去掉导致环的最后一条边 * 树可以看成是一个连通且无环的无向图。 * 给定往一棵 n 个节点 (节点值 1~n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间,且这条附加的边不属于树中已存在的边。 * 图的信息记录于长度为 n 的二维数组 edges ,edges[i] = [ai, bi] 表示图中在 ai 和 bi 之间存在一条边。 * 请找出一条可以删去的边,删除后可使得剩余部分是一个有着 n 个原创 2022-10-10 10:16:44 · 294 阅读 · 0 评论 -
leetcode/相似的字符串,两个字符串相同位置字母不同的次数不大于2 则视为相似
/** * 剑指 Offer II 117. 相似的字符串 * 入参strs中的字符串的字母都相同,字母顺序不同 * 两个字符串相同位置字母不同的次数不大于2 则视为相似 */原创 2022-10-09 11:28:08 · 160 阅读 · 0 评论 -
leetcode/省份数量
/** * 剑指 Offer II 116. 省份数量 * 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 * 省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。 * 给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相原创 2022-10-08 12:31:25 · 109 阅读 · 0 评论 -
leetcode/重建序列,根据有序子序列构建最短超序列
/** * 剑指 Offer II 115. 重建序列 * 给定一个长度为 n 的整数数组 nums ,其中 nums 是范围为 [1,n] 的整数的排列。还提供了一个 2D 整数数组sequences,其中sequences[i]是nums的子序列。 * 检查 nums 是否是唯一的最短超序列 。最短 超序列 是 长度最短 的序列,并且所有序列sequences[i]都是它的子序列。对于给定的数组sequences,可能存在多个有效的 超序列 。 * - 例如,对于sequences = [[1,原创 2022-10-07 10:09:15 · 232 阅读 · 0 评论 -
leetcode/外星文字典,根据字典还原按字典顺序递增字母列表
/** * 剑指 Offer II 114. 外星文字典,根据字典还原按字典顺序递增字母列表 * 现有一种使用英语字母的外星文语言,这门语言的字母顺序与英语顺序不同。 * 给定一个字符串列表 words ,作为这门语言的词典,words 中的字符串已经 按这门新语言的字母顺序进行了排序 。 * 请你根据该词典还原出此语言中已知的字母顺序,并 按字母递增顺序 排列。若不存在合法字母顺序,返回 "" 。若存在多种可能的合法字母顺序,返回其中 任意一种 顺序即可。 * 字符串 s 字典顺序小于 字符串原创 2022-10-06 12:31:42 · 422 阅读 · 0 评论 -
leetcode/课程顺序,可行的修课顺序
/** * 剑指 Offer II 113. 课程顺序,可行的修课顺序 * 现在总共有 numCourses 门课需要选,记为 0 到 numCourses-1。 * 给定一个数组prerequisites ,它的每一个元素prerequisites[i]表示两门课程之间的先修顺序。例如prerequisites[i] = [ai, bi]表示想要学习课程 ai,需要先完成课程 bi。 * 请根据给出的总课程数 numCourses 和表示先修顺序的 prerequisites 得出一个可行的修课原创 2022-10-05 10:27:28 · 225 阅读 · 0 评论 -
leetcode/最长递增路径,二维数组元素递增最长路径
/** * 剑指 Offer II 112. 最长递增路径 * 给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度 * 对于每个单元格,你可以往上,下,左,右四个方向移动。 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕)。 */原创 2022-10-04 11:42:42 · 304 阅读 · 0 评论 -
leetcode/计算除法,已知除法equations操作数和values商,求queries操作数的值
/** * 剑指 Offer II 111. 计算除法 * 给定一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] = [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi = values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。 * 另有一些以数组 queries 表示的问题,其中 queries[j] = [Cj, Dj] 表示第 j 个问题,请你根据已知条件找出 Cj / Dj = ? 的结果作为原创 2022-10-03 15:29:25 · 133 阅读 · 0 评论 -
leetcode/所有路径,从点0到点n-1的所有路径
/** * 剑指 Offer II 110. 所有路径 * 给定一个有 n 个节点的有向无环图,用二维数组 graph 表示,请找到所有从 0 到 n-1 的路径并输出(不要求按顺序) * graph的第 i 个数组中的单元都表示有向图中 i号节点所能到达的下一些结点(译者注:有向图是有方向的,即规定了 a→b 你就不能从 b→a ),若为空,就是没有下一个节点了。 * * 分析: * - int[][] graph是邻接表的存储结构 * - 回溯法深度优先,由于是有向图,所以不会重复原创 2022-10-02 09:55:31 · 561 阅读 · 0 评论 -
leetcode/开密码锁,4个0到9的环,每次只能转动1个数字
/** * 剑指 Offer II 109. 开密码锁 * 一个密码锁由 4 个环形拨轮组成,每个拨轮都有 10 个数字(0~9) * - 初始数字 0000 * - 结束数字 9999 * - 9的下一个数字是0 * - 0的上一个数字是9 * * deadends 包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定 * target 代表可以解锁的数字, * - 请给出解锁需要的最小旋转次数 * - 如果无论如何不能解锁,返回 -1 */原创 2022-10-01 10:24:35 · 516 阅读 · 0 评论 -
leetcode/单词演变,beginWord每次变化1个字母到endWord
/** * 剑指 Offer II 108. 单词演变,beginWord每次变化1个字母到endWord * 在字典(单词列表) wordList 中,从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列: * - 序列中第一个单词是 beginWord 。 * - 序列中最后一个单词是 endWord 。 * - 每次转换只能改变一个字母。 * -转换过程中的中间单词必须是字典wordList 中的单词。 * 给定两个长度相同但内容不同的单词 begin原创 2022-09-30 12:01:01 · 219 阅读 · 0 评论 -
leetcode/矩阵中的距离,元素1距离最近的元素0的距离
/** * 剑指 Offer II 107. 矩阵中的距离 * 给定一个由 0 和 1 组成的矩阵 mat,请输出一个大小相同的矩阵, * 其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 * * 分析 * - 0到自身的距离最短=0 * - 将所有为0的元素视为癌细胞,每次尝试感染周围1圈正常的细胞,不能重复感染,被感染的细胞变成了癌细胞 */原创 2022-09-26 16:24:10 · 282 阅读 · 0 评论 -
leetcode/二分图,相邻结点赋予另一种颜色
/** * 剑指 Offer II 106. 二分图 * 无向图 , * 是否连通,这个图可能不是连通图 * 结点数目和结点编号,图中有 n 个节点。其中每个节点都有一个介于 0 到 n - 1 之间的唯一编号 * 存储方式,graph[][] 行头是起始结点,行中是与行头直接相邻的结点,类似邻接表的表示方式 * 不存在自环(graph[u] 不包含 u)。 * 不存在平行边(graph[u] 不包含重复值)。 * * 二分图定义: * - 如果能将一个图的节点集合分割成两个独立原创 2022-09-26 11:15:45 · 194 阅读 · 0 评论 -
leetcode/岛屿的最大面积,grid[][]向四周拓展为1的元素
/** * 剑指 Offer II 105. 岛屿的最大面积 * 给定一个由 0 和 1 组成的非空二维数组 grid ,用来表示海洋岛屿地图。 * 一个岛屿是由一些相邻的1(代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。 * 你可以假设grid 的四个边缘都被 0(代表水)包围着。 * * 找到给定的二维数组中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。 */原创 2022-09-25 17:27:16 · 67 阅读 · 0 评论 -
leetcode/和等于target的排列的数目
/** * 剑指 Offer II 104. 排列的数目,和等于target的排列的数目 * 给定一个由 不同正整数组成的数组 nums ,和一个目标整数 target 。 * 请从 nums 中找出并返回总和为 target 的元素组合的个数。 * 数组中的数字可以在一次排列中出现任意次,但是顺序不同的序列被视作不同的组合。 * 题目数据保证答案符合 32 位整数范围。 */原创 2022-09-25 16:16:50 · 656 阅读 · 0 评论 -
leetcode/最少的硬币数目,组成总金额等于amount的所需最少硬币数量
/** * 剑指 Offer II 103. 最少的硬币数目 * 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 * 你可以认为每种硬币的数量是无限的。 */原创 2022-09-24 16:48:43 · 605 阅读 · 0 评论 -
leetcode/加减的目标值,给数组元素添加+或-号组成的表达式值=target的方案数
/** * 剑指 Offer II 102. 加减的目标值 * 给定一个正整数数组 nums 和一个整数 target 。 * 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 : * 返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。 * 例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" 。 */原创 2022-09-24 14:29:36 · 440 阅读 · 0 评论 -
leetcode/分割等和子集,从数组中选出若干数字的和等于总和的一半
/** * 剑指 Offer II 101. 分割等和子集 * 给定一个非空的正整数数组 nums ,请判断能否将这些数字分成元素和相等的两部分。 * 本题是"NP完全问题",暂时没有多项式时间复杂度的解法,如果有则证明P=NP,图灵奖。 * * 问题转换: * - 给定一个只包含正整数的非空数组nums[0],判断是否可以从数组中选出一些数字,使得这些数字的和等于整个数组的元素和的一半 * - 这个问题可以转换成「0−1背包问题」 * * 这道题与传统的「0−1背包问题」原创 2022-09-23 14:50:46 · 441 阅读 · 0 评论 -
leetcode/三角形中最小路径之和
/** * 剑指 Offer II 100. 三角形中最小路径之和 * 给定一个三角形 triangle ,找出自顶向下的最小路径和。 * 每一步只能移动到下一行中相邻的结点上。 * 相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。 * 也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。 * * 分析: * - 要求,找出自顶向下的最小路径和。到底部即可,三角形有底边,因此需要判断每种原创 2022-09-23 09:49:23 · 282 阅读 · 0 评论 -
leetcode/最小路径之和,机器人往下或右行走
/** * 剑指 Offer II 099. 最小路径之和 * 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 * 一个机器人每次只能向下或者向右移动一步。 * * 分析 * - 注意,机器人只能往下或右走 */原创 2022-09-22 10:27:15 · 214 阅读 · 0 评论 -
leetcode/路径的数目,机器人往下或右行走
/** * 剑指 Offer II 098. 路径的数目 * 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 * 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 * 问总共有多少条不同的路径? * * 分析 * - 注意,机器人只能往下或右走 */原创 2022-09-22 10:06:00 · 432 阅读 · 0 评论 -
leetcode/子序列的数目,s可删除部分元素的子序列等于t的次数
/** * 剑指 Offer II 097. 子序列的数目 * 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。 * 字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE"是"ABCDE"的一个子序列,而"AEC"不是) * 题目数据保证答案符合 32 位带符号整数范围。 * * 分析: * - s删除n个元素后等于t,n可以为0。 * - t作为s的子序列在s中出现的次数 * - s原创 2022-09-21 14:59:47 · 172 阅读 · 0 评论 -
leetcode/字符串交织,s1和s2字符串交织组成s3
/** * 剑指 Offer II 096. 字符串交织 * 给定三个字符串 s1、s2、s3,请判断 s3 能不能由 s1 和 s2 交织(交错) 组成。 * 两个字符串 s 和 t 交织 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: * - s = s1 + s2 + ... + sn * - t = t1 + t2 + ... + tm * - |n - m|原创 2022-09-21 09:10:20 · 433 阅读 · 0 评论 -
leetcode/两个字符串的最长公共子序列
/** * 剑指 Offer II 095. 最长公共子序列 * 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 * 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。 * 例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。 * 两个字符串的 公共子序列 是这两个字符串所共同拥有的原创 2022-09-20 11:57:24 · 661 阅读 · 0 评论 -
leetcode/最少回文分割,字符串被切割成回文子串的最少切割次数
/** * 剑指 Offer II 094. 最少回文分割 * 给定一个字符串 s,请将 s 分割成一些子串,使每个子串都是回文串。 * 返回符合要求的 最少分割次数 。 */原创 2022-09-20 09:32:04 · 302 阅读 · 0 评论 -
leetcode/最长斐波那契子数列
/** * 剑指 Offer II 093. 最长斐波那契数列 * 如果序列 X_1, X_2, ..., X_n 满足下列条件,就说它是 斐波那契式 的: * - n >= 3 * - 对于所有 i + 2原创 2022-09-19 11:19:08 · 221 阅读 · 0 评论 -
leetcode/翻转字符,保证递增
/** * 剑指 Offer II 092. 翻转字符 * 如果一个由'0' 和 '1'组成的字符串,是以一些 '0'(可能没有 '0')后面跟着一些 '1'(也可能没有 '1')的形式组成的,那么该字符串是单调递增的。 * 我们给出一个由字符 '0' 和 '1' 组成的字符串 s,我们可以将任何 '0' 翻转为 '1' 或者将 '1' 翻转为 '0'。 * 返回使 s 单调递增 的最小翻转次数。 */原创 2022-09-19 09:16:55 · 89 阅读 · 0 评论 -
leetcode/粉刷房子
/** * 剑指 Offer II 091. 粉刷房子 * 假如有一排房子,共 n 个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。 * 当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。每个房子粉刷成不同颜色的花费是以一个n x 3的正整数矩阵 costs 来表示的。 * 例如,costs[0][0] 表示第 0 号房子粉刷成红色的成本花费;costs[1][2] 表示第 1 号房子粉刷成绿色的原创 2022-09-18 09:53:36 · 130 阅读 · 0 评论 -
leetcode/环形房屋偷盗
/** * 剑指 Offer II 090. 环形房屋偷盗 * 一个专业的小偷,计划偷窃一个环形街道上沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。 * 同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 * 给定一个代表每个房屋存放金额的非负整数数组 nums ,请计算 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。 * * 分析: * - 如果偷窃了第一间房原创 2022-09-18 09:16:00 · 157 阅读 · 0 评论 -
leetcode/房屋偷盗
/** * 剑指 Offer II 089. 房屋偷盗 * 一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响小偷偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 * 给定一个代表每个房屋存放金额的非负整数数组 nums ,请计算 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 */原创 2022-09-17 09:01:28 · 112 阅读 · 0 评论 -
leetcode/爬楼梯的最少成本
/** * 剑指 Offer II 088. 爬楼梯的最少成本 * 数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值cost[i](下标从 0 开始)。 * 每当爬上一个阶梯都要花费对应的体力值,一旦支付了相应的体力值,就可以选择向上爬一个阶梯或者爬两个阶梯。 * 请找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。 */原创 2022-09-17 08:20:07 · 291 阅读 · 0 评论