随笔分类 - leetcode
摘要:如果数组中没有重复元素,可以用此代码快速实现 排序数组 public static int[] quickSort(int[] arr) { if (arr.length == 0 || null == arr) { return arr; } quickSort(arr, 0, arr.lengt
阅读全文
摘要:leetcode 题目 二叉树的层次遍历,定义一个新的 TreeLevelNode 类记录当前节点属于哪一层。 初始化时,层数为0,并且将根节点赋值为第1层元素,再入队列。 出队列时,判断如果是新的一层的元素,则创建 list,并且半当前层数切换到新的层数。否则,list 不变,直接添加当前层的元素
阅读全文
摘要:实现队列,采用 LinkedList 类 实现栈,采用 java.util.Stack 类 优先级队列,采用 PriorityQueue 类 LRU cache,采用 LinkedHashMap,参考:https://www.cnblogs.com/hapjin/p/17576261.html ke
阅读全文
摘要:给你一个链表的头节点 head 。删除 链表的 中间节点 ,并返回修改后的链表的头节点 head 。 思路 双指针,快慢指针。pre 指针记录待删除节点的前缀。 slow 指向 head fast 指向 head.next,注意一定要是 head.next slow 每次移动一个节点,fast 每次
阅读全文
摘要:给你一个整数数组 nums 和一个整数 k 。你需要找到 nums 中长度为 k 的 子序列 ,且这个子序列的 和最大 。 请你返回 任意 一个长度为 k 的整数子序列。 子序列 定义为从一个数组里删除一些元素后,不改变剩下元素的顺序得到的数组。 1. 剔除掉 num.length - k 个 最小
阅读全文
摘要:## 全排列 给定一个不含重复数字的整数数组 nums ,返回其 所有可能的全排列 。可以 按任意顺序 返回答案。 > 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 1. 采用回溯法求解,采用深度遍历,递
阅读全文
摘要:LinkedHashMap 有两种使用模式:insert-order 和 access-order。通过指定构造方法accessOrder参数来决定使用哪种模式 /** * Constructs an empty <tt>LinkedHashMap</tt> instance with the *
阅读全文
摘要:给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 1. 二叉树具有递归的特性 2. 若两棵二叉树是相同的,那么它们的根节点一定是相同的 3. 在第2步的基础上,若根节点的左右子树也都是相同的,那么这两棵二叉树就相同 从第2步到第3步,具有“重叠子空间”。 ```java p
阅读全文
摘要:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 ![image](https://img2023.cnblogs.com/blog/715283/202307/715283-20230721233321080-976454767.png) 节点 0 和节点 5 的最近公共祖先是 2。
阅读全文
摘要:给定一棵二叉搜索树,请找出其中第 k 大的节点的值。 1. 使用中序递归遍历二叉搜索树 2. 中序遍历二叉搜索树得到的结果是有序的,将遍历结果保存到 ArrayList 3. 通过下标的方式获取 ArrayList 第 k 大节点 ```java class Solution { public in
阅读全文
摘要:TreeMap 比较器:比较的是 key 的顺序。如果 key 是相同的,则 put 时,会将新的value覆盖旧value。 如下示例: 'a' 和 'b' 在比较器定义中被视为“相同”。 ```java public static void main(String[] args) { HashM
阅读全文
摘要:给定一个字符串 s ,根据字符出现的 频率 对其进行 降序排序 。一个字符出现的 频率 是它出现在字符串中的次数。 链接:https://leetcode.cn/problems/sort-characters-by-frequency 1. HashMap 统计每个字符出现的频率 > tips:采
阅读全文
摘要:给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 ### 方法一 基于 jdk 类库 PriorityQueue 实现 ```java class Solution { public int findKthLargest(int[] nums, int k) { //优先级队列
阅读全文
摘要:## 题目描述 给定一个二叉搜索树的 根节点 root 和一个整数 k , 请判断该二叉搜索树中是否存在两个节点它们的值之和等于 k 。假设二叉搜索树中节点的值均唯一。[参考leetcode](https://leetcode.cn/problems/opLdQZ/) ## 分析 1. 中序遍历二叉
阅读全文
摘要:采用头插法反转单链表,代码如下: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */
阅读全文
摘要:题目描述 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字
阅读全文
摘要:题目描述 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的最长的回文串 。 示例 输入:s = "abccccdd" 输出:7 解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。 分析 统计每个字符出现的次数 出现偶数次的字符,肯定能够组成回文串 出现
阅读全文
摘要:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 相似题目:求解整型数组的最大子串和 求解最长递增子序列,说明这是一个“最优
阅读全文
摘要:题目:https://leetcode.cn/problems/merge-sorted-array/ 两个数组是有序的,存在一个大数组 nums1、一个小数组 nums2。 将大数组 nums1中,有序的那部分元素 copy 出来,记为 nums1copy,采用双指针移动法,一个指针指向 nums
阅读全文
摘要:题目描述 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 输入: [1,2,3,1] 输出: 4 解释: 选择 1 号预约和 3 号预
阅读全文