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

LeetCode 精选 TOP 面试题(Java 实现)—— 从前序与中序遍历序列构造二叉树【代码】

文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 自研思路三、实现代码3.1 自研实现(Java)3.2 C++ 实现 一、题目描述 1.1 题目从前序与中序遍历序列构造二叉树根据一棵树的前序遍历与中序遍历构造二叉树。注意: 你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ \9 20/ \15 71.2 知识点二叉树1.3 题目链接https://lee...

LeetCode 精选 TOP 面试题(Java 实现)—— 买卖股票的最佳时机【代码】

文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 自研思路三、实现代码3.1 自研实现 一、题目描述 1.1 题目买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,...

LeetCode 精选 TOP 面试题(Java 实现)—— 验证回文串【代码】

文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 解题思路三、实现代码3.1 代码实现一(2ms)3.2 代码实现二(25ms) 一、题目描述 1.1 题目验证回文串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama" 输出: true示例 2:输入: "race a car" 输出: false1.2 知识点双指针1....

LeetCode 1114. Print in Order--Java解法--并发问题【代码】

此文首发于我的个人博客:LeetCode 1114. Print in Order–Java解法–并发问题 — zhang0peter的个人博客LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 大部分题目C++,Python,Java的解法都有。题目地址:Print in Order - LeetCodeSuppose we have a class: public class Foo {public void first() { print("first"); }public void second() { print("second"); }public void third() { print("...

LeetCode 链表题 ( Java )【代码】【图】

leetcode 237. 删除链表中的节点 链接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list/ 示例 : 输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9. 这道题比较简单,修改之前节点的 next 指针,使其指向之后的节点:/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode n...

leetcode.分治.241为运算表达式设计优先级-Java【代码】

1. 具体题目 给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。 示例 1:  输入: "2-1-1"  输出: [0, 2]  解释: ((2-1)-1) = 0;(2-(1-1)) = 2 2. 思路分析 分治 + 递归 3. 代码 1 public List<Integer> diffWaysToCompute(String input) {2 List<Integer> ans = new ArrayList<>();3 for(int i ...

leetcode.排序.451根据字符出现频率排序-Java【代码】

1. 具体题目 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。 示例 1:  输入: "tree"  输出: "eert"  解释: e出现两次,r和t都只出现一次。因此e必须出现在r和t之前。此外,"eetr"也是一个有效的答案。 2.思路分析 桶排序,思路同 leetcode347(https://www.cnblogs.com/XRH2019/p/11959468.html) 注意:向字符串中添加字符用 StringBuffer,直接用"string" + char 会超出时间限制 3. 代码 1 public String fr...

leetcode 673. 最长递增子序列的个数 java【代码】

题目: 给定一个未排序的整数数组,找到最长递增子序列的个数。 示例 1: 输入: [1,3,5,4,7]输出: 2解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。示例 2: 输入: [2,2,2,2,2]输出: 5解释: 最长递增子序列的长度是1,并且存在5个子序列的长度为1,因此输出5。注意: 给定的数组长度不超过 2000 并且结果一定是32位有符号整数。 解题: 方法:动态规划 假设对于以 nums[i] 结尾的序列,我们知道最长序列的长度 len...

leetcode 646. 最长数对链 java【代码】

题目: 给出 n 个数对。 在每一个数对中,第一个数字总是比第二个数字小。 现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面。我们用这种形式来构造一个数对链。 给定一个对数集合,找出能够形成的最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。 示例 : 输入: [[1,2], [2,3], [3,4]]输出: 2解释: 最长的数对链是 [1,2] -> [3,4]注意: 给出数对的个数在...

leetcode 523. 连续的子数组和 java【代码】

题目: 给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。 示例 1: 输入: [23,2,4,6,7], k = 6输出: True解释: [2,4] 是一个大小为 2 的子数组,并且和为 6。示例 2: 输入: [23,2,6,4,7], k = 6输出: True解释: [23,2,6,4,7]是大小为 5 的子数组,并且和为 42。说明: 数组的长度不会超过10,000。你可以认为所有数字...

leetcode.数组.27移除元素-Java【代码】

1. 具体题目 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1:  给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 2. 思路分析 将数组中数值为 val 的元素赋值为当前数...

LeetCode 1253. 重构 2 行二进制矩阵 - Java - 统计

题目链接:https://leetcode-cn.com/contest/weekly-contest-162/problems/reconstruct-a-2-row-binary-matrix/给你一个 2 行 n 列的二进制数组: 矩阵是一个二进制矩阵,这意味着矩阵中的每个元素不是 0 就是 1。 第 0 行的元素之和为 upper。 第 1 行的元素之和为 lower。 第 i 列(从 0 开始编号)的元素之和为 colsum[i],colsum 是一个长度为 n 的整数数组。 你需要利用 upper,lower 和 colsum 来重构这个矩阵,并以二维整数...

leetcode : 奇偶链表 (java)【代码】

题目描述: 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 示例 1:输入: 1->2->3->4->5->NULL 输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->5->6->4->7->NULL 输出: 2->3->6->7->1->5->4->NULL说明:应当保持奇数节点和偶...

Leetcode : 24. 两两交换链表中的节点 (java)【代码】

两两交换链表中的节点: 题目描述: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/ class Solution {public ListNode swapPairs(ListNode head) {//判...

LeetCode 676. Implement Magic Dictionary实现一个魔法字典 (C++/Java)【代码】

题目: Implement a magic directory with buildDict, and search methods. For the method buildDict, youll be given a list of non-repetitive words to build a dictionary. For the method search, youll be given a word, and judge whether if you modify exactly one character into another character in this word, the modified word is in the dictionary you just built. Example 1: Input: buildDict(["hello", "lee...