随笔分类 - algorithm_novice
算法新手班
摘要:package class08; import java.util.Arrays; import java.util.Stack; /** * 分区函数和快排。 * 快排分为递归和非递归两个版本。 */ public class Code03_PartitionAndQuickSort { /**
阅读全文
摘要:package class08; /** * 归并排序 * <p> * 时间复杂度:O(N*logN) * 描述: * 1.数组长度N,步长step去追N,1变2,2变4,4变8。。。 * 所以step变了几次?logN次。 * 2.step每变一次的,时间复杂度是多少呢? * 每一次左组和右组me
阅读全文
摘要:package class07; import java.util.ArrayList; import java.util.List; /** * leetcode 113. 路径总和 II * 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径
阅读全文
摘要:package class07; /** * leetcode112. 路径总和 * <p> * 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。 * 判断该树中是否存在这样的 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。 * 如果
阅读全文
摘要:package class07; /** * 验证搜索二叉树 * <p> * 另:判断是否是平衡搜索二叉树? * 写两个函数,一个是判断是否是平衡二叉树,一个是判断是否是搜索二叉树。 * 将两个布尔值取与(即&&)的关系,就是最后结果。 */ public class Code05_IsBinary
阅读全文
摘要:package class07; /** * 验证平衡二叉树 */ //测试链接:https://leetcode.com/problems/balanced-binary-tree public class Code02_BalancedBinaryTree { public static cla
阅读全文
摘要:package class07; import java.util.LinkedList; import java.util.List; import java.util.Queue; /** * 二叉树的层序遍历 II */ //public class Code01_BinaryTreeLeve
阅读全文
摘要:package class06; import java.util.HashMap; import java.util.Map; /** * 根据一个二叉树的先序遍历数组int[] pre和中序遍历的数组int[] in,重构这个二叉树。 */ //测试链接:https://leetcode.com
阅读全文
摘要:package class06; /** * 求出一个二叉树的最大深度 */ public class Code04_MaximumDepthOfBinaryTree { public static class TreeNode { int val; TreeNode left; TreeNode
阅读全文
摘要:package class06; /** * 判断是否是镜面树(对称树) */ //测试链接:https://leetcode.com/problems/symmetric-tree public class Code03_MirrorTree { public static class TreeN
阅读全文
摘要:package class06; /*** * 判断两个二叉树是否相同 * * 已知两个数的头节点分别是head1和head2。 * 结构相同并且对应的节点的值也相同,则认为它们是相同的。 */ //测试链接:https://leetcode.com/problems/same-tree publi
阅读全文
摘要:package class04; /*** * 两个有序链表的合并 * * 给定两个有序链表的头节点head1和head2, * 返回合并之后的大连表,要求依然有序。 */ public class Code06_MergeTwoSortedLinkedList { public static cl
阅读全文
摘要:package class04; /*** * 两个链表相加 * 给定两个链表的头节点head1和head2 * 认为从左到右是某个数字从低位到高位,返回相加之后的列表。 * 例子1:4->3->6 2->5->3 * 返回:6->8->9 * 解释:634 + 352 = 986 * * 例子2:
阅读全文
摘要:package class04; /*** * K个节点的组内逆序调整 * * 实现k个节点的小组内部逆序,如果最后一组不够k个就保持原顺序。 * 例子: * 调整前:1->2->3->4->5->6->7->8,k = 3 * 调整后:3->2->1->6->5->4->7->8 */ // 测试
阅读全文
摘要:package class04; import java.util.Deque; import java.util.LinkedList; /** * 双链表实现双端队列 */ public class Code03_DoubleLinkedListToDeque { public static c
阅读全文
摘要:package class04; import java.util.LinkedList; import java.util.Queue; import java.util.Stack; /** * 单链表实现队列和栈 */ public class Code02_LinkedListToQueue
阅读全文
摘要:package class04; import java.util.ArrayList; import java.util.List; /** * 单链表翻转,和双链表翻转 */ public class Code01_ReverseList { private static void printN
阅读全文
摘要:/** * 局部最小问题 * 已知一个数组arr,该数组无序,且相邻两个数不相等。 * 求:得出一个局部最小的值的索引。(返回一个即可) * <p> * 现约定: * 如果第一个数比第二个数小,则第一个数称为局部最小。 * 如果最后一个数比倒数第二个数小,则最后一个数称为局部最小。 * 对于数组中间
阅读全文
摘要:import java.util.Arrays; /** * 已知一个升序数组arr,和一个整数num,找出小于等于num的数的最大索引。即最右的索引。 */ public class Code03_BSNearRight { public static int mostRightNoMoreInd
阅读全文
摘要:import java.util.Arrays; /** * 已知一个升序数组arr,和一个整数num,找出大于等于num的数的最小索引。即最左的索引。 */ public class Code02_BSNearLeft { public static int mostLeftNoLessIndex
阅读全文