随笔分类 -  leetcode

算法题
基础快排
摘要:class Solution { public int[] sortArray(int[] nums) { quickSort(nums, 0, nums.length - 1); return nums; } private void quickSort(int[] nums, int left, 阅读全文
posted @ 2025-07-21 15:41 caoshikui 阅读(7) 评论(0) 推荐(0)
双指针快速排序
摘要:双指针快速排序是一种优化的快速排序实现,通过使用两个指针从数组的两端向中间移动,来减少不必要的交换操作,从而提高排序效率。以下是使用双指针实现快速排序的 Java 代码示例: public class QuickSortDoublePointer { public static void main 阅读全文
posted @ 2025-07-21 15:17 caoshikui 阅读(83) 评论(0) 推荐(0)
插入排序
摘要:插入排序是一种简单直观的排序算法,它的工作原理类似于整理扑克牌。插入排序通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。以下是使用 Java 实现插入排序的代码示例: public class InsertingSort { public static void m 阅读全文
posted @ 2025-07-21 10:30 caoshikui 阅读(12) 评论(0) 推荐(0)
选择排序
摘要:public class SelectionSort { public static void main(String[] args) { int[] arr = {5, 2, 9, 4, 7, 6, 1, 3, 8}; selectionSort(arr); System.out.println( 阅读全文
posted @ 2025-07-21 10:10 caoshikui 阅读(10) 评论(0) 推荐(0)
冒泡排序
摘要:public class BubbleSort { public static void main(String[] args) { int[] arr = {5, 7, 4, 3, 6, 2}; bubbleSort(arr); System.out.println("Sorted array: 阅读全文
posted @ 2025-07-21 09:57 caoshikui 阅读(10) 评论(0) 推荐(0)
124. 二叉树中的最大路径和
摘要:二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root ,返回其 最大路径和 。 示例 1: 输入:root = [1 阅读全文
posted @ 2025-07-17 20:59 caoshikui 阅读(24) 评论(0) 推荐(0)
437. 路径总和 III
摘要:给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 示例 1: 输入:root = [10,5,-3,3,2,n 阅读全文
posted @ 2025-07-17 20:24 caoshikui 阅读(18) 评论(0) 推荐(0)
105. 从前序与中序遍历序列构造二叉树
摘要:给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] 输出: 阅读全文
posted @ 2025-07-17 20:18 caoshikui 阅读(17) 评论(0) 推荐(0)
114. 二叉树展开为链表
摘要:给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1: 输入:root = [1,2,5,3,4,null, 阅读全文
posted @ 2025-07-17 19:23 caoshikui 阅读(12) 评论(0) 推荐(0)
二叉树的先序、中序、后序、递归非递归方法
摘要:import java.util.LinkedList; import java.util.Queue; import java.util.Stack; /** * @author 李文浩 * @version 2017/7/30. */ public class BinaryTree { /** 阅读全文
posted @ 2025-07-17 19:11 caoshikui 阅读(16) 评论(0) 推荐(0)
199. 二叉树的右视图
摘要:给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入:root = [1,2,3,null,5,null,4] 输出:[1,3,4] 解释: 示例 2: 输入:root = [1,2,3,4,null,null,null,5 阅读全文
posted @ 2025-07-17 17:37 caoshikui 阅读(10) 评论(0) 推荐(0)
230. 二叉搜索树中第 K 小的元素
摘要:给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。 示例 1: 输入:root = [3,1,4,null,2], k = 1 输出:1 示例 2: 输入:root = [5,3,6,2,4,null,null,1], k = 3 阅读全文
posted @ 2025-07-17 17:03 caoshikui 阅读(9) 评论(0) 推荐(0)
98. 验证二叉搜索树
摘要:给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入:root = [2,1,3] 输出:true 示例 2 阅读全文
posted @ 2025-07-17 16:46 caoshikui 阅读(11) 评论(0) 推荐(0)
108. 将有序数组转换为二叉搜索树
摘要:给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 示例 1: 输入:nums = [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案: 示例 2: 输入 阅读全文
posted @ 2025-07-17 16:23 caoshikui 阅读(9) 评论(0) 推荐(0)
102. 二叉树的层序遍历
摘要:给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: 输入:root = [1] 输出:[[1]] 示例 3: 输入 阅读全文
posted @ 2025-07-17 16:16 caoshikui 阅读(13) 评论(0) 推荐(0)
543. 二叉树的直径
摘要:给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 示例 1: 输入:root = [1,2,3,4,5] 输出:3 解释:3 ,取路径 [4,2,1 阅读全文
posted @ 2025-07-17 16:01 caoshikui 阅读(11) 评论(0) 推荐(0)
101. 对称二叉树
摘要:给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root = [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root = [1,2,2,null,3,null,3] 输出:false 递归 class Solution { public boolean 阅读全文
posted @ 2025-07-17 15:34 caoshikui 阅读(10) 评论(0) 推荐(0)
226. 翻转二叉树
摘要:示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root = [2,1,3] 输出:[2,3,1] 示例 3: 输入:root = [] 输出:[] 递归 class Solution { public TreeNode inv 阅读全文
posted @ 2025-07-17 15:16 caoshikui 阅读(5) 评论(0) 推荐(0)
104. 二叉树的最大深度
摘要:给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:3 示例 2: 输入:root = [1,null,2] 输出:2 递归: class Solut 阅读全文
posted @ 2025-07-17 15:06 caoshikui 阅读(19) 评论(0) 推荐(0)
94. 二叉树的中序遍历
摘要:给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 方法一:递归 /** * Definition fo 阅读全文
posted @ 2025-07-17 14:51 caoshikui 阅读(11) 评论(0) 推荐(0)