- 博客(104)
- 收藏
- 关注
原创 创建springboot项目启动报错
请删除该文件或确保该文件位于正确的类路径子目录中。(3)解决:注意在创建springboot项目时,将下面红框处的版本调低。(1)出现错误: 类文件具有错误的版本 61.0, 应为 52.0。spring-boot-starter-parent 版本过高。(2)原因:pom.xml中配置的。
2023-04-25 21:13:35
714
1
原创 Optimizing the Transition Waste in Coded Elastic Computing(实现0浪费弹性编码计算)
分布式计算,zero transition waste
2022-07-12 21:27:59
133
原创 比特位计数-LeetCode338
一、题目描述给你一个整数n,对于0 <= i <= n中的每个i,计算其二进制表示中1的个数,返回一个长度为n + 1的数组ans作为答案。示例一输入:n = 2输出:[0,1,1]解释:0 --> 01 --> 12 --> 10二、解题思路1)暴力算法:循环1~n,再利用循环计算每个数中包含的1的个数public int[] countBits(int n) { int[] nums = n...
2022-05-01 10:05:48
120
原创 打家劫舍3-LeetCode337
一、题目描述小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直接相连的房子在同一天晚上被打劫 ,房屋将自动报警。给定二叉树的 root 。返回 在不触动警报的情况下 ,小偷能够盗取的最高金额 。二、解题思路求“盗取最高金额”,所以考虑用动态规划。该题涉及在二叉树中利用动态规划求取最优子结构。考虑到每个节点有1
2022-04-29 10:28:37
701
原创 下一个更大元素-LeetCode496
一、题目描述nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。给你两个 没有重复元素 的数组 nums1 和 nums2 ,下标从 0 开始计数,其中nums1 是 nums2 的子集。对于每个 0 <= i < nums1.length ,找出满足 nums1[i] == nums2[j] 的下标 j ,并且在 nums2 确定 nums2[j] 的 下一个更大元素 。如果不存在下一个更大元素,那么本次查询的答案是
2022-04-28 10:38:03
168
原创 零钱兑换-LeetCode322
一、题目描述给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。示例一:输入:coins = [1, 2, 5], amount = 11输出:3 解释:11 = 5 + 5 + 1二、解题思路该题要求求最少硬币数量,因而想到利用动态规划。(1)设计状态变量:dp[i]:金额为i时的最小面
2022-04-27 15:09:04
258
原创 买卖股票时机含冷冻期-LeetCode309
一、题目描述给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。输入: prices = [1,2,3,0,2]输出: 3 解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]二、解题思路看到求
2022-04-26 10:41:10
107
原创 最长递增子序列-LeetCode300
一、题目描述给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。二、解题思路利用动态规划(1)设置状态变量:dp[i]:以nums[i]结尾的最长递增子序列(
2022-04-25 20:51:25
56
原创 寻找重复数-LeetCode287
一、题目描述给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。注意!!! :你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。示例一:输入:nums = [1,3,4,2,2]输出:2二、解题思路(这道题的解题思路很难想到,以前做的题从来没有碰到过。)(1)题目有明确要求:设计的解决方案必须..
2022-04-24 18:02:54
775
原创 完全平方数-LeetCode279
一、题目描述给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。示例一:输入:n = 12输出:3 解释:12 = 4 + 4 + 4二、思路解析题中看到求最值(最大值、最小值、最优值),脑海里应有思路之一就是利用动态规划。(不行的话再另做打算)(1)设计状态变量:dp[i]:能构成数i的最小完全平方数个数。
2022-04-24 17:38:29
431
原创 搜索二维矩阵2-LeetCode240
一、题目描述编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5输出:true二、解题思路(1)看到有序数组想到二分查找。首先按行查找,如果targ.
2022-04-22 10:09:50
103
原创 除自身以外数组的乘积--LeetCode238
一、题目描述给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请不要使用除法,且在O(n) 时间复杂度内完成此题。示例1:输入: nums = [1,2,3,4]输出: [24,12,8,6]二、解题思路(1)注意题中的约束:算法时间复杂度为O(n),所以说不能有双重循环。(2)定..
2022-04-21 10:17:26
734
原创 二叉树的最近公共祖先-LeetCode236
一、题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”二、解题思路(1)首先看到题目就在想,要是能自底向上查找就好了,但是二叉树只有父节点指向子节点的指针,没有子节点指向父节点的指针。但是我们可以通过二叉树的后序遍历来间接实现从子节点到父节点的查找,因为后序遍历顺序为:左孩子-->.
2022-04-21 09:23:52
90
原创 翻转二叉树-LeetCode226
一、题目描述给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。二、解题思路二叉树题型最重要的思路就是递归:该题就从根节点开始,递归的遍历整棵树,遍历到一个节点,就交换该节点的左右子树,然后再递归遍历该节点的左右子树,并交换遍历到的节点的左右孩子。三、代码实现class Solution { public TreeNode invertTree(TreeNode root) { if(root==null){ retu
2022-04-19 20:28:39
239
原创 最大正方形-LeetCode221
一、题目描述在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。示例一:二、解题思路(1)暴力解法:遍历二维数组,以找到的每个“1”为正方形的起点,找到其附近所能构成正方形的最大面积(2)动态规划:(完全没想到该思路)1)状态变量dp[i][j]:(i,j)位置时的最大正方形边长2)初始化:处于matrix上面一条边和左边一条边上的'1'所构成的正方形面积必为13)状态转移方程:dp[i][j]=Math.min(dp.
2022-04-19 15:20:29
721
原创 实现前缀树(Trie树)-LeetCode208
一、题目描述Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类1)Trie() 初始化前缀树对象。2)void insert(String word) 向前缀树中插入字符串 word 。3)boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。4)bo
2022-04-17 14:51:45
77
原创 课程表-LeetCode 207
一、题目描述你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。例如,先修课程对[0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 false 。示例一.
2022-04-16 15:53:28
342
原创 岛屿数量-LeetCode200
一、题目描述给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例一:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1示例二:输入:g...
2022-04-15 14:46:24
81
原创 相交链表-LeetCode160(简单)
一、题目描述给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:(此处两链表相交后的所有节点均为共用节点,即均是指向同一内存地址的节点)题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。二、解题思路(1)双重循环。外层循环遍历链表A,内层循环遍历链表B,若当前两指针指向相同节点,则返回。(2)利用哈希表。利用哈
2022-04-14 10:31:15
373
原创 最小栈-LeetCode(简单)
一、题目描述设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。二、解题思路题目主要是让我们设计一个算法能够以O(1)(即是不用遍历所有元素)的时间复杂度取出当前栈内元素的最小值,所以利用一个辅
2022-04-14 09:59:26
671
原创 乘积最大子数组-LeetCode152
一、题目描述给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个32-位 整数。子数组 是数组的连续子序列。二、解题思路找最优解则利用动态规划,将该题与“最大子数组和”力扣进行对比1)相同点:状态变量dp[i]均为记录以nums[i]为结尾的子序列的最大值2)不同点:因为加法只会有两种情况,为正数则增大子序列和,为负数则减小子序列和,所以dp[i]只与dp[i-1]与nums[i]..
2022-04-13 14:52:13
117
原创 LRU缓存-LeetCode146
(一)题目描述请你设计并实现一个满足LRU (最近最少使用) 缓存 约束的数据结构。实现 LRUCache 类:LRUCache(int capacity): 以 正整数 作为容量capacity 初始化 LRU 缓存int get(int key): 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value): 如果关键字key 已经存在,则变更其数据值value ;如果不存在,则向缓存中插入该组key-value...
2022-04-11 21:31:48
369
原创 环形链表2-LeetCode142
(一)题目描述给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。(不允许修改 链表。)示例1:输入:head = [3,2,0,-4], pos
2022-04-11 10:35:32
958
原创 环形链表-LeetCode141
(一)题目描述给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则,返回 false 。实例输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有
2022-04-10 10:23:05
559
原创 正则表达式匹配-LeetCode10(动态规划)(困难)
一、题目描述给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。二、解题思路1、源字符串s有三种字符:普通字符、‘.’、‘*’(1)当p中第i个为普通字符时,直接比较s中相应字符与p中相应字符是否相等(2)当p中第i个为‘.’时,无论s中第j个为任意字符,均可以匹配成功(3)当p中第i个为‘*’时(最麻烦的一个):..
2022-04-09 21:01:37
58
原创 单词拆分-LeetCode139(动态规划)
一、题目描述给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。二、解题思路1、利用动态规划:(1)dp[i] :长度为i的子串能否利用
2022-04-08 21:11:18
743
原创 最长连续序列-LeetCode128
一、题目描述给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。二、解题思路(1)首先想到先排序,然后循环遍历一次即可找出最大连续长度,但题目要求时间复杂度为O(n),排排序时间复杂度至少为O(nlgn),所以不能用排序(2)用哈希,即hashSet。(自动去重;方便查找)1)将元素nums[i]放入hashset后,只需判断nums[i]+1、nums[i]+2....
2022-04-08 10:13:16
49
原创 买卖股票的最佳时机-LeetCode121
一、题目描述给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注...
2022-04-07 15:31:50
55
原创 二叉树展开为链表-LeetCode114
一、题目描述给你二叉树的根结点 root ,请你将它展开为一个单链表:(1)展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。(2)展开后的单链表应该与二叉树 先序遍历 顺序相同。二、解题思路(1)首先中序遍历该二叉树,将遍历的每个节点保存在ArrayList集合中,然后循环遍历该集合同时修改每个节点的左右孩子。class Solution{ public void flatten(TreeNode r
2022-04-07 10:35:42
1382
原创 从前序遍历与中序遍历构造二叉树-LeetCode105
一、题目描述给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。二、解题思路1、唯一确定一棵二叉树的遍历方式1)前序遍历+中序遍历2)后序遍历+中序遍历(确定遍历方式必须要中序遍历)2、对于一棵二叉树而言,前序遍历的形式:[ 根节点, [左子树的前序遍历结果], [右子树的前序遍历结果] ]中序遍历结果形式: [ [左...
2022-04-06 10:34:09
791
原创 二叉树的最大深度-LeetCode104
一、题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。二、解题思路(1)层序遍历将每一层的元素放入队列,循环条件为:while (!queue.isEmpty())该循环循环了多少次,该二叉树就有多少层(因为每次循环都会将当前层的所有节点出队,并让其所有子节点入队)(2)深度优先的递归遍历当前节点的最大高度=Max(左子树最大高度,右子树最大高度) +1;其左右子树的最大高度亦是如此计
2022-04-05 22:00:12
47
原创 二叉树层序遍历-LeetCode102
一、题目描述给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。二、解题思路(层序遍历)用队列存储二叉树的元素,当遍历到队头元素时,将其出队并访问,同时将其所有子节点入队(当前队列中的元素个数即为当前二叉树所在层的元素个数)三、代码实现class Solution4 { public List<List<Integer>> levelOrder(TreeNode root) { List&
2022-04-02 10:20:21
471
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人