自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 390. 消除游戏

列表 arr 由在范围 [1, n] 中的所有整数组成,并按严格递增排序。重复上面的步骤,但这次是从右到左。也就是,删除最右侧的数字,然后剩下的数字每隔一个删除一个。从左到右,删除第一个数字,然后每隔一个数字删除一个,直到到达列表末尾。不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。给你整数 n ,返回 arr 最后剩下的数字。flag true 正向 false 反向。, 在所有 Java 提交中击败了。, 在所有 Java 提交中击败了。执行结果:通过显示详情。

2023-02-16 18:02:11 382 1

原创 leetcode37. 解数独

数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。数独部分空格内已填入了数字,空白格用 '.' 表示。编写一个程序,通过填充空格来解决数独问题。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。* 判断位置是否合法。

2022-11-24 11:00:04 178

原创 leecode39. 组合总和

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。2 和 3 可以形成一组候选,2 + 2 + 3 = 7。输入:candidates = [2,3,6,7], target = 7。输入: candidates = [2,3,5], target = 8。输出: [[2,2,2,2],[2,3,3],[3,5]]输出:[[2,2,3],[7]]

2022-11-19 11:09:59 174

原创 古有冒泡排序,今有煎饼排序

例如,arr = [3,2,1,4] ,选择 k = 3 进行一次煎饼翻转,反转子数组 [3,2,1] ,得到 arr = [1,2,3,4]。第四次翻转后(k = 3):arr = [1, 2, 3, 4],此时已完成排序。第一次翻转后(k = 4):arr = [1, 4, 2, 3]第二次翻转后(k = 2):arr = [4, 1, 2, 3]第三次翻转后(k = 4):arr = [3, 2, 1, 4]初始状态 arr = [3, 2, 4, 1]输入:[3,2,4,1]输入:[1,2,3]

2022-10-28 10:44:22 144

原创 2360. 图中的最长环 难度困难

public class Demo1 { public static void main(String[] args) { System.out.println(new Solution().longestCycle(new int[]{3,3,4,2,3})); }}class Solution { static int cnt = 0; static Map map = new HashMap(); p

2022-10-06 18:19:33 381

原创 leecode211. 添加与搜索单词 - 数据结构设计

bool search(word) 如果数据结构中存在字符串与 word 匹配,则返回 true;word 中可能包含一些 '.' ,每个 . 都可以表示任何一个字母。// 返回 False。// 返回 True。// 返回 True。// 返回 True。

2022-08-05 12:25:34 71

原创 leetcode难度:困难773. 滑动谜题

最终当板 board 的结果是 [[1,2,3],[4,5,0]] 谜板被解开。输入:board = [[1,2,3],[4,0,5]]输入:board = [[1,2,3],[5,4,0]]移动 1 次: [[4,1,2],[0,5,3]]移动 2 次: [[0,1,2],[4,5,3]]移动 3 次: [[1,0,2],[4,5,3]]移动 4 次: [[1,2,0],[4,5,3]]移动 5 次: [[1,2,3],[4,5,0]]尚未移动: [[4,1,2],[5,0,3]]...

2022-08-03 11:15:06 249

原创 leetcode498. 对角线遍历

if(nextrow>=0&&nextcol

2022-07-27 11:54:35 199

原创 leetcode148. 排序链表

给你链表的头结点head,请将其按升序排列并返回排序后的链表。输入head=[-1,5,3,4,0]输入head=[4,2,1,3]输出[-1,0,3,4,5]思路使用快慢指针,截断节点。输出[1,2,3,4]输入head=[]

2022-07-26 13:49:06 210

原创 leetcode剑指 Offer 59 - II. 队列的最大值

请定义一个队列并实现函数max_value得到队列里的最大值,要求函数max_value、push_back和pop_front的均摊时间复杂度都是O(1)。若队列为空,pop_front和max_value需要返回-1。//保持队列的最左端为当前的最大值。//保持队列的最左端为当前的最大值。输出[null,null,null,2,1,2]//保持队列的最左端为当前的最大值。//取滑动窗口最左端的数据。输出[null,-1,-1]...

2022-07-25 12:58:40 88

原创 leecode面试题 16.19. 水域大小

你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。//更新y链表的代表节点。输出[1,2,4]...

2022-07-21 10:40:54 95

原创 leecode959. 由斜杠划分区域

在由1x1方格组成的nxn网格grid中,每个1x1方块由'/'、'\'或空格构成。解释回想一下,因为\字符是转义的,所以"/\\"表示/\,而"\\/"表示\/。给定网格grid表示为一个字符串数组,返回区域的数量。请注意,反斜杠字符是转义的,因此'\'用'\\'表示。输入grid=["/\\","\\/"]输入grid=["/","/"]输入grid=["/",""]//更新y链表的代表节点。......

2022-07-20 14:34:30 137

原创 leecode79. 单词搜索

输入board=[["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]],word="ABCCED"输入board=[["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]],word="ABCB"输入board=[["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]],word="SEE"

2022-07-18 17:13:45 151

原创 leecode105. 从前序与中序遍历序列构造二叉树

给定两个整数数组preorder和inorder,其中preorder是二叉树的先序遍历,inorder是同一棵树的中序遍历,请构造二叉树并返回其根节点。输入preorder=[3,9,20,15,7],inorder=[9,3,15,20,7]输入preorder=[-1],inorder=[-1]输出[3,9,20,null,null,15,7]//从中序数组中,找到分割点。//分割点的左边为左子树。//分割点的右边为左子树。...

2022-07-15 11:04:48 123

原创 leecode1029. 两地调度

公司计划面试 2n 人。给你一个数组 costs ,其中 costs[i] = [aCosti, bCosti] 。第 i 人飞往 a 市的费用为 aCosti ,飞往 b 市的费用为 bCosti 。返回将每个人都飞到 a 、b 中某座城市的最低费用,要求每个城市都有 n 人抵达。示例 1:输入:costs = [[10,20],[30,200],[400,50],[30,20]]输出:110解释:第一个人去 a 市,费用为 10。第二个人去 a 市,费用为 30。第三个人去 b 市,费用为 5

2022-07-08 09:41:39 146

原创 leecode1700. 无法吃午餐的学生数量

学校的自助午餐提供圆形和方形的三明治,分别用数字 0 和 1 表示。所有学生站在一个队列里,每个学生要么喜欢圆形的要么喜欢方形的。餐厅里三明治的数量与学生的数量相同。所有三明治都放在一个 栈 里,每一轮:如果队列最前面的学生 喜欢 栈顶的三明治,那么会 拿走它 并离开队列。否则,这名学生会 放弃这个三明治 并回到队列的尾部。这个过程会一直持续到队列里所有学生都不喜欢栈顶的三明治为止。给你两个整数数组 students 和 sandwiches ,其中 sandwiches[i] 是栈里面第 i​​​​

2022-07-01 11:12:18 101

原创 算法为屠龙刀,设计模式为倚天剑

算法像是单兵的作战能力和武器装备,设计模式像打仗列的阵型。只是单挑的话,阵型就不重要了;如果是群斗,请参考戚家军是如何用鸳鸯阵吊打单兵作战能力爆表的日本武士;如果上升到产品成败的战略高度,不好意思,除非能开挂做到《硅谷传奇》里男猪脚那个牛逼的压缩算法,同时还要开主角光环才行个人建议先学好算法,会养成一个工程师必须具备的心态:不断优化自己程序的效率,低效一点都无法容忍。妥协的事情等到开始工作后再慢慢做吧。最最不济,学好算法,面试的时候也是极有用的…至于设计模式,学也只是摸到皮毛,这需要大量的实践经验才可以。很

2022-06-30 18:11:59 204 1

原创 leecode1123. 最深叶节点的最近公共祖先

给你一个有根节点 root 的二叉树,返回它 最深的叶节点的最近公共祖先 。回想一下:叶节点 是二叉树中没有子节点的节点树的根节点的 深度 为 0,如果某一节点的深度为 d,那它的子节点的深度就是 d+1如果我们假定 A 是一组节点 S 的 最近公共祖先,S 中的每个节点都在以 A 为根节点的子树中,且 A 的深度达到此条件下可能的最大值。 示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4]输出:[2,7,4]解释:我们返回值为 2 的节点,在图中用黄色标记

2022-06-29 10:27:35 101

原创 leecode面试题 04.10. 检查子树

检查子树。你有两棵非常大的二叉树:T1,有几万个节点;T2,有几万个节点。设计一个算法,判断 T2 是否为 T1 的子树。如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 T2 为 T1 的子树,也就是说,从节点 n 处把树砍断,得到的树与 T2 完全相同。注意:此题相对书上原题略有改动。示例1: 输入:t1 = [1, 2, 3], t2 = [2] 输出:true示例2: 输入:t1 = [1, null, 2, 4], t2 = [3, 2] 输出:false提示:...

2022-06-28 17:09:26 122

原创 leecode337. 打家劫舍 III

小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直接相连的房子在同一天晚上被打劫 ,房屋将自动报警。给定二叉树的 root 。返回 在不触动警报的情况下 ,小偷能够盗取的最高金额 。示例 1:输入: root = [3,2,3,null,3,null,1]输出: 7 解释: 小偷一晚能够盗取的最高金额 3 + 3 + 1 =

2022-06-28 16:32:01 213

原创 leecode剑指 Offer II 079. 所有子集

给定一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]] 利用回溯法解题:到达最后一位后,回溯到上一位...

2022-06-23 18:00:15 112

原创 leecode剑指 Offer II 105. 岛屿的最大面积

给定一个由 0 和 1 组成的非空二维数组 grid ,用来表示海洋岛屿地图。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。示例 1:输入: grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0

2022-06-17 16:41:38 118

原创 leecode2265. 统计值等于子树平均值的节点数

给你一棵二叉树的根节点 root ,找出并返回满足要求的节点数,要求节点的值等于其 子树 中值的 平均值 。注意:n 个元素的平均值可以由 n 个元素 求和 然后再除以 n ,并 向下舍入 到最近的整数。root 的 子树 由 root 和它的所有后代组成。 示例 1:输入:root = [4,8,5,0,1,null,6]输出:5解释:对值为 4 的节点:子树的平均值 (4 + 8 + 5 + 0 + 1 + 6) / 6 = 24 / 6 = 4 。对值为 5 的节点:子树的平均值 (5

2022-06-10 10:26:34 73

原创 无限背包:leecode322. 零钱兑换

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。示例 1:输入:coins = [1, 2, 5], amount = 11输出:3 解释:11 = 5 + 5 + 1示例 2:输入:coins = [2], amount = 3输出:-1示例 3:输入:coins = [1], amount = 0输出:0 提示

2022-06-02 10:15:26 77

原创 博弈leecode486. 预测赢家

给你一个整数数组 nums 。玩家 1 和玩家 2 基于这个数组设计了一个游戏。玩家 1 和玩家 2 轮流进行自己的回合,玩家 1 先手。开始时,两个玩家的初始分值都是 0 。每一回合,玩家从数组的任意一端取一个数字(即,nums[0] 或 nums[nums.length - 1]),取到的数字将会从数组中移除(数组长度减 1 )。玩家选中的数字将会加到他的得分上。当数组中没有剩余数字可取时,游戏结束。如果玩家 1 能成为赢家,返回 true 。如果两个玩家得分相等,同样认为玩家 1 是游戏的赢家

2022-05-29 18:40:48 86

原创 leecode45. 跳跃游戏 II

给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例 1:输入: nums = [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。示例 2:输入: nums = [2,3,0,1,4]输出: 2...

2022-05-27 14:00:24 200

原创 leecode55. 跳跃游戏

给定一个非负整数数组nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最...

2022-05-26 23:25:45 103

原创 leecode328. 奇偶链表

给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。你必须在 O(1) 的额外空间复杂度和 O(n) 的时间复杂度下解决这个问题。示例 1:输入: head = [1,2,3,4,5]输出:[1,3,5,2,4]示例 2:输入: head = [2,1,3,5,6,4,7]输出: [.

2022-05-25 23:23:27 277

原创 leecode1035. 不相交的线

在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足:nums1[i] == nums2[j]且绘制的直线不与任何其他连线(非水平线)相交。请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。以这种方法绘制线条,并返回可以绘制的最大连线数。示例 1:输入:nums1 = [1,4,2], nums2 = [1,2,4]输出:2解释:可以画.

2022-05-25 22:41:05 64

原创 为什么那么多框架都设计有Context?

程序是现实的映射,但程序要遵守“单一职责原则”,而现实对象是复杂的。“一个人在家里对父亲尽到子女的职责,在公司对父亲尽到同事的职责,在不同场景下他的职责可能都有差异,而且完全没有止境”。如果完全忠于现实,那么人对象要实现所有的职责……不可能也不合理,在设计中这个类就称为无所不能的“上帝类”。上帝类是应该避免的。解决这个矛盾的办法是什么?1,创建一个无所不包的上下文2,对象的职能 = factory.get(obj,ctx)这样,将一个对象的职责向外委托,使得整个程序所有的对象都有可能是对象

2022-05-25 15:30:23 255

原创 leecode122. 买卖股票的最佳时机 II 刷题失败

给你一个整数数组 prices ,其中prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润。示例 1:输入:prices = [7,1,5,3,6,4]输出:7解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。 随后,在第 4 天...

2022-05-25 00:29:40 95

原创 leecode121. 买卖股票的最佳时机

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注...

2022-05-24 19:59:01 76

原创 leecode64. 最小路径和

给定一个包含非负整数的 mxn网格grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:grid = [[1,2,3],[4,5,6]]输出:12提示:m == grid.lengthn == grid[i].length1 <= m, n &...

2022-05-23 21:07:44 95

原创 leecode 213. 打家劫舍 II

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。示例1:输入:nums = [2,3,2]输出:3解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为.

2022-05-23 14:22:48 137

原创 动态规划的演进

面对动态规划专业术语:状态转移方程,最优子结构,边界。很少有人看懂。实际上动态规划有一条演进路线:暴力递归--》记忆化搜索--》二维表推进(动态规则)。从打家劫舍这道题入手:198. 打家劫舍难度中等2139收藏分享切换为英文接收动态反馈你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报.

2022-05-22 20:37:23 138

原创 leecode797. 所有可能的路径

给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序)graph[i] 是一个从节点 i 可以访问的所有节点的列表(即从节点 i 到节点 graph[i][j]存在一条有向边)。示例 1:输入:graph = [[1,2],[3],[3],[]]输出:[[0,1,3],[0,2,3]]解释:有两条路径 0 -> 1 -> 3 和 0 -> 2 -> 3示例 2:输入:graph = [[4,3

2022-05-22 19:07:38 51

原创 leecode563. 二叉树的坡度

给你一个二叉树的根节点 root ,计算并返回 整个树 的坡度 。一个树的 节点的坡度 定义即为,该节点左子树的节点之和和右子树节点之和的 差的绝对值 。如果没有左子树的话,左子树的节点之和为 0 ;没有右子树的话也是一样。空结点的坡度是 0 。整个树 的坡度就是其所有节点的坡度之和。示例 1:输入:root = [1,2,3]输出:1解释:节点 2 的坡度:|0-0| = 0(没有子节点)节点 3 的坡度:|0-0| = 0(没有子节点)节点 1 的坡度:|2-3| = 1

2022-05-21 12:07:24 98

原创 leecode22. 括号生成

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]提示:1 <= n <= 8解题代码:class Solution { static List<String> list = null; public List&lt.

2022-05-21 10:33:44 78

原创 leecode52. N皇后 II

52. N皇后 II难度困难366收藏分享切换为英文接收动态反馈n皇后问题研究的是如何将n个皇后放置在n × n的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数n,返回n 皇后问题不同的解决方案的数量。示例 1:输入:n = 4输出:2解释:如上图所示,4 皇后问题存在两个不同的解法。示例 2:输入:n = 1输出:1提示:1 <= n <= 9class Solution { //结果 ...

2022-05-21 00:04:54 117

原创 leecode662中等难度的题,思考了半天才攻克

662. 二叉树最大宽度给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。示例 1:输入: 1 / \ 3 2 / \ \ 5 3 9输出: 4解...

2022-05-12 17:08:39 89

空空如也

空空如也

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

TA关注的人

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