【Java实现 LeetCode 652 寻找重复的子树(两个map的DFS)】教程文章相关的互联网学习教程文章

LeetCode第41题:First Missing Positive(Java、C++)详解【代码】【图】

Given an unsorted integer array, find the smallest missing positive integer. Example 1: Input: [1,2,0] Output: 3 Example 2: Input: [3,4,-1,1] Output: 2 Example 3: Input: [7,8,9,11,12] Output: 1 题目解析: 1、乍一看,题目很简单呀,但是限制了时间复杂度,题目就不简单啦,使用排序啥的肯定超时时间复杂度限制啦; 2、思路: 假设数组的大小为n,我们遍历整个数组,如果当前元素i在1-n之间那么就将当前元素和数组第...

Java实现 LeetCode 390 消除游戏【代码】

390. 消除游戏 给定一个从1 到 n 排序的整数列表。 首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾。 第二步,在剩下的数字中,从右到左,从倒数第一个数字开始,每隔一个数字进行删除,直到列表开头。 我们不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。 返回长度为 n 的列表中,最后剩下的数字。 示例: 输入: n = 9, 1 2 3 4 5 6 7 8 9 2 4 6 8 2 6 6 输出: 6 PS: 最下面那一行...

【LeetCode学习记录01】两数相加(Java实现)【代码】【图】

2. 两数相加(Java实现) 题目:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807看了大佬们的思路后重新整理的代码 思路:...

leetcode 1. Two Sum (java)【代码】

1 class Solution {2 public int[] twoSum(int[] nums, int target) {3 Map<Integer, Integer> map = new HashMap<>();4 for (int i = 0; i < nums.length; i++) {5 int desired = target - nums[i];6 if (map.containsKey(desired)) {7 return new int[] {map.get(desired), i};8 } else {9 map.put(nums[i], i); 10 } 11 ...

LeetCode 141. 环形链表 (Java)【代码】

环形链表给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/linked-list-cycle 著作权归领扣网络所有。商业转载请联系官方授权,非商...

leetcode 1013 将数组分成和相等的三个部分(Java)【代码】

将数组分成和相等的三个部分题目描述思路一:纯暴力代码思路二 双指针:代码思路三 半暴力:代码 题目描述给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。 形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + … + A[i] == A[i+1] + A[i+2] + … + A[j-1] == A[j] + A[j-1] + … + A[A.length - 1]) 就可以将数组三等分。示例 1: 输出:[0,2,1,-6,6,-7,9,1,2,0,1] 输出:true ...

JAVA程序设计:第 K 个最小的素数分数(LeetCode:786)【代码】

一个已排序好的表 A,其包含 1 和其他一些素数. 当列表中的每一个 p<q 时,我们可以构造一个分数 p/q 。 那么第 k 个最小的分数是多少呢? 以整数数组的形式返回你的答案, 这里 answer[0] = p 且 answer[1] = q. 示例: 输入: A = [1, 2, 3, 5], K = 3 输出: [2, 5] 解释: 已构造好的分数,排序后如下所示: 1/5, 1/3, 2/5, 1/2, 3/5, 2/3. 很明显第三个最小的分数是 2/5. 输入: A = [1, 7], K = 1 输出: [1, 7] 注意: A 的取值范围在...

LeetCode 53. 最大子序和 (Java)【代码】

最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/maximum-subarray 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 思路:贪心算法,每步都找最佳方案,最后方案即为全局最优。...

Java实现 LeetCode 352 将数据流变为多个不相交区间【代码】

352. 将数据流变为多个不相交区间 给定一个非负整数的数据流输入 a1,a2,…,an,…,将到目前为止看到的数字总结为不相交的区间列表。 例如,假设数据流中的整数为 1,3,7,2,6,…,每次的总结为: [1, 1] [1, 1], [3, 3] [1, 1], [3, 3], [7, 7] [1, 3], [7, 7] [1, 3], [6, 7] 进阶: 如果有很多合并,并且与数据流的大小相比,不相交区间的数量很小,该怎么办? 提示: 特别感谢 @yunhong 提供了本问题和其测试用例。 class...

[LeetCode—005][Java]买卖股票的最佳时机【代码】

题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2: 输入: [...

leetcode【每日一题】买卖股票的最佳时机 Java【代码】

题干 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2: 输入: [7,...

【LeetCode】46. 全排列(JAVA)【代码】

原题地址:https://leetcode-cn.com/problems/permutations/ 题目描述: 给定一个没有重复数字的序列,返回其所有可能的全排列。示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]解题方案: 【LeetCode】46 全排列 (C++) 时隔一年,写回溯变难了好多ioi 当初怎么说出比较简单这种鬼话的… 代码: class Solution {List<List<Integer>> res;public List<List<Integer>> permute(int[] nums) {...

LeetCode 1103. Distribute Candies to People (Java版; Easy)【代码】

welcome to my blog LeetCode 1103. Distribute Candies to People (Java版; Easy) 题目描述 We distribute some?number of candies, to a row of n =?num_people?people in the following way:We then give 1 candy to the first person, 2 candies to the second person, and so on until we give n? candies to the last person.Then, we go back to the start of the row, giving n?+ 1 candies to the first person, n?+ 2 ca...

LeetCode 1351. 统计有序矩阵中的负数 (Java)【代码】

统计有序矩阵中的负数给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。 请你统计并返回 grid 中 负数 的数目。 示例 1: 输入:grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]] 输出:8 解释:矩阵中共有 8 个负数。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/count-negative-numbers-in-a-sorted-matrix 著作权归领扣网络所有。商业转载请联系官方授权,非商...

JAVA程序设计:滑动谜题(LeetCode:773)【代码】

在一个 2 x 3 的板上(board)有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用 0 来表示. 一次移动定义为选择 0 与一个相邻的数字(上下左右)进行交换. 最终当板 board 的结果是 [[1,2,3],[4,5,0]] 谜板被解开。 给出一个谜板的初始状态,返回最少可以通过多少次移动解开谜板,如果不能解开谜板,则返回 -1 。 示例: 输入:board = [[1,2,3],[4,0,5]] 输出:1 解释:交换 0 和 5 ,1 步完成 输入:board = [[1,2,3],[5,4,0]] 输...