leetcode
文章平均质量分 86
lenyan~
在努力刷算法中,希望可以和大家多多交流。
展开
-
DevC++ 的对拍教程
对比发现问题觉得有用的话可以,支持一下。如果愿意的话关注一下。会对你有更多的帮助。每天都会不定时更新哦 >人原创 2024-04-05 09:00:00 · 418 阅读 · 0 评论 -
力扣第316与1081题 不同字符的最小子序列 C++ Java Python
请你去除字符串中重复的字母,使得每个字母只出现一次。为列表,用于记录每个字符出现的次数。是用于记录栈中已经包含的字符,而。类型,用于记录栈中已经包含的字符;类型,用于记录每个字符出现的次数。,且后面还会出现,则将栈顶元素移除。将栈中字符逆序输出,构成结果字符串。类型,用于存储结果字符串的字符;是用于统计每个字符出现的次数。是用于记录栈中已经包含的字符,是用于记录每个字符出现的次数。存储结果字符串的字符,集合。是用于存储结果字符串的栈,记录栈中已经包含的字符,如果栈中已经包含了字符。原创 2024-03-22 07:00:00 · 1857 阅读 · 0 评论 -
力扣LCR 100题 三角形最小路径和 C++ 动态规划 附Java代码
中等相关标签给定一个三角形triangle,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。在这里指的是与相同或者等于的两个结点。也就是说,如果正位于当前行的下标i,那么下一步可以移动到下一行的下标i或i + 1。11如下面简图所示:46748 3自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。原创 2023-11-27 08:00:00 · 241 阅读 · 0 评论 -
力扣第462题 最小操作次数使数组元素相等 II C++ 排序基础 附Java代码
中等相关标签给你一个长度为n的整数数组nums,返回使所有数组元素相等需要的最小操作数。在一次操作中,你可以使数组中的一个元素加1或者减1。2只需要两次操作(每次操作指南使一个元素加 1 或减 1):1316。原创 2023-11-23 08:00:00 · 221 阅读 · 0 评论 -
力扣第463题 岛屿的周长 C++ 深度优先搜索 + 思维判断的边界
简单相关标签给定一个row x col的二维网格地图grid表示陆地,表示水域。网格中的格子方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100。计算这个岛屿的周长。16它的周长是上面图片中的 16 个黄色的边4401。原创 2023-11-22 08:00:00 · 295 阅读 · 0 评论 -
力扣第841题 钥匙和房间 C++ DFS BFS 附Java代码
中等相关标签有n个房间,房间按从0到n - 1编号。最初,除0号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而,你不能在没有获得钥匙的时候进入锁住的房间。当你进入一个房间,你可能会在里面找到一套不同的钥匙,每把钥匙上都有对应的房间号,即表示钥匙可以打开的房间。你可以拿上所有钥匙去解锁其他房间。给你一个数组rooms其中rooms[i]是你进入i号房间可以获得的钥匙集合。如果能进入房间返回true,否则返回false。true我们从 0 号房间开始,拿到钥匙 1。原创 2023-11-21 08:00:00 · 284 阅读 · 0 评论 -
力扣第127题 单词接龙 C++ 广度优先搜索 附Java代码
困难相关标签字典wordList中从单词beginWord和endWord的是一个按下述规格形成的序列siwordListbeginWordwordList给你两个单词beginWord和endWord和一个字典wordList,返回从beginWord到endWord的中的。如果不存在这样的转换序列,返回0。5一个最短转换序列是 "hit" -> "hot" -> "dot" -> "dog" -> "cog", 返回它的长度 5。0。原创 2023-11-20 08:00:00 · 82 阅读 · 0 评论 -
力扣第827题 最大人工岛 C++ 深度优先搜索 附Java代码
困难相关标签给你一个大小为n x n二进制矩阵grid。只能将一格0变成1。返回执行此操作后,grid中最大的岛屿面积是多少?由一组上、下、左、右四个方向相连的1形成。3将一格0变成1,最终连通两个小岛得到面积为 3 的岛屿。grid =4将一格0变成1,岛屿的面积扩大为 4。4没有0可以让我们变成1,面积依然为 4。01。原创 2023-11-19 08:00:00 · 106 阅读 · 0 评论 -
力扣第1020题 飞地的数量 C++ 深度优先搜索 附Java代码
中等相关标签给你一个大小为m x n的二进制矩阵grid,其中0表示一个海洋单元格、1表示一个陆地单元格。一次是指从一个陆地单元格走到另一个相邻()的陆地单元格或跨过grid的边界。返回网格中在任意次数的移动中离开网格边界的陆地单元格的数量。3有三个 1 被 0 包围。一个 1 没有被包围,因为它在边界上。0所有 1 都在边界上或可以到达边界。01。原创 2023-11-18 08:00:00 · 62 阅读 · 0 评论 -
力扣第695题 岛屿的最大面积 C++ DFS BFS 附Java代码
相关标签给你一个大小为m x n的二进制矩阵grid。是由一些相邻的1(代表土地) 构成的组合,这里的「相邻」要求两个1必须在相邻。你可以假设grid的四个边缘都被0(代表水)包围着。岛屿的面积是岛上值为1的单元格的数目。计算并返回grid中最大的岛屿面积。如果没有岛屿,则返回面积为0。6答案不应该是 11 ,因为岛屿只能包含水平或垂直这四个方向上的 1。001。原创 2023-11-17 09:00:00 · 361 阅读 · 0 评论 -
力扣第200题 岛屿数量 C++ dfs bfs 深搜和广搜 附Java代码
中等相关标签给你一个由'1'(陆地)和'0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。原创 2023-11-17 08:00:00 · 392 阅读 · 0 评论 -
力扣第797题 所有可能的路径 C++ 深度优先搜索 +java
中等相关标签给你一个有n个节点的,请你找出所有从节点0到节点n-1的路径并输出(graph[i]是一个从节点i可以访问的所有节点的列表(即从节点i到节点存在一条有向边)。有两条路径 0 -> 1 -> 3 和 0 -> 2 -> 3graph[i]原创 2023-11-16 09:00:00 · 223 阅读 · 0 评论 -
力扣第84 题柱状图中最大的矩形 C++ 单调栈 Java
困难相关标签给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。求在该柱状图中,能够勾勒出来的矩形的最大面积。10最大的矩形为图中红色区域,面积为 104。原创 2023-11-16 08:00:00 · 311 阅读 · 0 评论 -
力扣第503题 下一个更大元素 II C++ 单调栈 + Java代码
中等相关标签给定一个循环数组nums的下一个元素是nums[0]),返回 nums中每个元素的。数字x的是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出-1。[2,-1,2]第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数;第二个 1 的下一个最大的数需要循环搜索,结果也是 2。原创 2023-11-15 08:00:00 · 59 阅读 · 0 评论 -
力扣第496题 下一个更大元素 I C++ 暴力 | 单调栈(优化)+ Java注释
简单相关标签nums1中数字x的是指x在nums2中对应位置的比x大的元素。给你两个的数组nums1和nums2,下标从开始计数,其中nums1是nums2的子集。对于每个,找出满足的下标j,并且在nums2确定nums2[j]的。如果不存在下一个更大元素,那么本次查询的答案是-1。返回一个长度为的数组ans作为答案,满足ans[i]是如上所述的。[-1,3,-1]nums1 中每个值的下一个更大元素如下所述:- 4 ,用加粗斜体标识,nums2 = [1,3,,2]。原创 2023-11-14 09:00:00 · 140 阅读 · 0 评论 -
力扣第739题 每日温度 c++ 单调栈 Java
中等相关标签给定一个整数数组,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。原创 2023-11-14 08:00:00 · 330 阅读 · 0 评论 -
力扣第516题 最长回文子序列 c++ 动态规划 附Java代码 注释版
相关标签给你一个字符串s,找出其中最长的回文子序列,并返回该序列的长度。子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。4一个可能的最长回文子序列为 "bbbb"。s = "cbbd"2一个可能的最长回文子序列为 "bb"。原创 2023-11-13 09:00:00 · 215 阅读 · 0 评论 -
力扣第647题 回文子串 c++ 动态规划 双指针 附Java代码 注释解释版
中等相关标签给你一个字符串s,请你统计并返回这个字符串中的数目。是正着读和倒过来读一样的字符串。是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。s = "abc"3三个回文子串: "a", "b", "c"s = "aaa"66个回文子串: "a", "a", "a", "aa", "aa", "aaa"原创 2023-11-13 08:00:00 · 145 阅读 · 0 评论 -
力扣第72题 编辑距离 (增 删 改) C++ 动态规划 附Java代码
中等相关标签给你两个单词word1和word2请返回将word1转换成word2所使用的最少操作数。3horse -> rorse (将 'h' 替换为 'r')rorse -> rose (删除 'r')rose -> ros (删除 'e')5intention -> inention (删除 't')inention -> enention (将 'i' 替换为 'e')enention -> exention (将 'n' 替换为 'x')原创 2023-11-12 08:00:00 · 462 阅读 · 0 评论 -
力扣第583题 两个字符串的删除操作 c++ 动态规划 附Java代码
中等相关标签给定两个单词word1和word2,返回使得word1和word2所需的。可以删除任意一个字符串中的一个字符。2第一步将 "sea" 变为 "ea" ,第二步将 "eat "变为 "ea"4word2。原创 2023-11-11 09:00:00 · 216 阅读 · 0 评论 -
力扣第115题 不同的子序列 c++ 动态规划 注释版 + Java代码
相关标签给你两个字符串s和t,统计并返回在s的中t出现的个数,结果需要对 109 + 7 取模。输出 : 3如下所示, 有 3 种可以从 s 中得到 "rabbit" 的方案。输出 : 5如下所示, 有 5 种可以从 s 中得到 "bag" 的方案。t。原创 2023-11-11 08:00:00 · 40 阅读 · 0 评论 -
力扣第392题 判断子序列 c++ 双指针 动态规划 + 其他解法 附Java代码
简单相关标签给定字符串和,判断是否为的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?添加此问题并且创建所有测试用例。truefalse。原创 2023-11-10 10:00:00 · 103 阅读 · 0 评论 -
力扣第53题 最大子数组和 C++ 动态规划 / 贪心算法 附Java代码
中等相关标签给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。是数组中的一个连续部分。6连续子数组 [4,-1,2,1] 的和最大,为 6。nums = [1]123如果你已经实现复杂度为O(n)的解法,尝试使用更为精妙的求解。原创 2023-11-10 08:00:00 · 119 阅读 · 0 评论 -
力扣第1035题 不相交的线中等 c++ (最长公共子序列) 动态规划 附Java代码
中等相关标签在两条独立的水平线上按给定的顺序写下nums1和nums2中的整数。现在,可以绘制一些连接两个数字nums1[i]和nums2[j]请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。以这种方法绘制线条,并返回可以绘制的最大连线数。2可以画出两条不交叉的线,如上图所示。但无法画出第三条不相交的直线,因为从 nums1[1]=4 到 nums2[2]=4 的直线将与从 nums1[2]=2 到 nums2[1]=2 的直线相交。32。原创 2023-11-10 09:00:00 · 231 阅读 · 0 评论 -
力扣第1143题 最长公共子序列 c++ 动态规划 附Java代码 注释版
相关标签给定两个字符串text1和text2,返回这两个字符串的最长的长度。如果不存在,返回0。一个字符串的是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。"ace""abcde""aec""abcde"两个字符串的是这两个字符串所共同拥有的子序列。3最长公共子序列是 "ace" ,它的长度为 3。3最长公共子序列是 "abc" ,它的长度为 3。0两个字符串没有公共子序列,返回 0。text2。原创 2023-11-09 10:00:00 · 130 阅读 · 0 评论 -
力扣第718题 最长重复子数组 c++ 动态规划 + 滚动数组优化 附Java代码
中等相关标签给两个整数数组nums1和nums2,返回两个数组中、长度最长的子数组的长度。3长度最长的公共子数组是 [3,2,1]。5。原创 2023-11-09 09:00:00 · 182 阅读 · 0 评论 -
力扣第674题 最长连续递增序列 C++ 动态规划 + 贪心 附Java代码
简单相关标签给定一个未经排序的整数数组,找到最长且,并返回该序列的长度。可以由两个下标l和rl < r)确定,如果对于每个l <= i < r,都有,那么子序列就是连续递增子序列。3最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为 5 和 7 在原数组里被 4 隔开。1最长连续递增序列是 [2], 长度为1。原创 2023-11-09 08:00:00 · 37 阅读 · 0 评论 -
力扣第300题 最长递增子序列 c++ 动态规划题 附Java代码
中等相关标签给你一个整数数组nums,找到其中最长严格递增子序列的长度。是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组的子序列。4最长递增子序列是 [2,3,7,101],因此长度为 4。41。原创 2023-11-08 09:00:00 · 164 阅读 · 0 评论 -
力扣第714题 买卖股票的最佳时机含手续费 c++ 动态规划 附Java代码
相关标签给定一个整数数组prices,其中prices[i]表示第i天的股票价格;整数fee代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。8能够达到的最大利润:在此处买入 prices[0] = 1在此处卖出 prices[3] = 8在此处买入 prices[4] = 4。原创 2023-11-08 08:00:00 · 80 阅读 · 0 评论 -
力扣第309题 买卖股票的最佳时机含冷冻期 c++ 动态规划 附Java代码
中等相关标签给定一个整数数组prices,其中第prices[i]表示第i天的股票价格。设计一个算法计算出最大利润。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。3对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]0。原创 2023-11-07 10:00:00 · 60 阅读 · 0 评论 -
力扣第188题 买卖股票的最佳时机 IV c++ 动态规划题 附Java代码
困难相关标签给你一个整数数组prices和一个整数k,其中prices[i]是某支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成k笔交易。也就是说,你最多可以买k次,卖k次。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。2在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2。7。原创 2023-11-07 09:30:00 · 108 阅读 · 0 评论 -
力扣第123题 买卖股票的最佳时机 III c++ 动态规划解法 hard题 附Java代码
困难相关标签给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成交易。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。6在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3。随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格 = 4)的时候卖出,这笔交易所能获得利润 = 4-1 = 3。4。原创 2023-11-07 09:00:00 · 96 阅读 · 0 评论 -
力扣第122题 买卖股票的最佳时机 Il c++ 动态规划解法 dp思维 股票问题 附Java代码
贪心解法 股票问题2相关标签给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回你能获得的利润。7在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。原创 2023-11-07 08:30:00 · 101 阅读 · 0 评论 -
力扣第121题 买卖股票的最佳时机 c++ 动态规划解法 熟练dp思维 之简单题 附Java代码
贪心解法 股票问题相关标签给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择买入这只股票,并选择在卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。5在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。0。原创 2023-11-07 08:00:00 · 768 阅读 · 2 评论 -
力扣第337题 打家劫舍 IIl c++ 附Java代码 暴力+记忆递推 或or 动态规划
相关标签小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。除了root之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。如果,房屋将自动报警。给定二叉树的root。返回,小偷能够盗取的最高金额。7小偷一晚能够盗取的最高金额 3 + 3 + 1 = 79小偷一晚能够盗取的最高金额 4 + 5 = 9[1, 104]原创 2023-11-06 09:00:00 · 93 阅读 · 0 评论 -
力扣第213题 打家劫舍|| c++ 附Java代码 将回环转线性 动态规划
相关标签你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,。给定一个代表每个房屋存放金额的非负整数数组,计算你,今晚能够偷窃到的最高金额。3你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。4你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4。3。原创 2023-11-06 08:30:00 · 92 阅读 · 0 评论 -
力扣第198题 打家劫舍 c++ 附Java代码 动态规划
相关标签你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,。给定一个代表每个房屋存放金额的非负整数数组,计算你,一夜之内能够偷窃到的最高金额。[1,2,3,1]4偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4。12偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。原创 2023-11-06 08:00:00 · 52 阅读 · 0 评论 -
力扣第139题 单词拆分 c++ 附java代码 动态规划题型
时间复杂度为O(n^2),其中n为字符串s的长度。这是因为我们需要遍历字符串s的每个位置,对于每个位置i,又需要从0到i-1的位置进行遍历,因此总的时间复杂度为O(n^2)。空间复杂度为O(n),其中n为字符串s的长度。这是因为我们使用了一个大小为n+1的dp数组来保存中间结果,以及一个unordered_set来存储wordDict中的单词。因此,总的空间复杂度为O(n)。相关标签给你一个字符串s和一个字符串列表wordDict作为字典。请你判断是否可以利用字典中出现的单词拼接出s。原创 2023-11-05 09:00:00 · 199 阅读 · 0 评论 -
力扣第279题 完全平方数 c++ 附java代码 (完全背包)动态规划问题
相关标签给你一个整数n,返回和为n的完全平方数的最少数量。是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,149和16都是完全平方数,而3和11不是。原创 2023-11-05 08:00:00 · 328 阅读 · 0 评论 -
力扣第322题 零钱兑换 c++ java 动态规划
这个问题的目标是计算凑出目标金额所需的最少硬币数量。原创 2023-11-04 12:00:00 · 488 阅读 · 0 评论