数据结构与算法
文章平均质量分 54
枫海的shy
这个作者很懒,什么都没留下…
展开
-
二分法相关题目
【代码】二分法相关题目。原创 2022-09-03 15:17:06 · 148 阅读 · 1 评论 -
找到数组中出现奇数次的数
【代码】找到数组中出现奇数次的数。原创 2022-09-03 13:59:31 · 233 阅读 · 0 评论 -
08.KMP、Manacher算法
KMP、Manacher算法KMP算法求是s1是否包含s2public static int getIndexOf(String s1, String s2) { if (s1 == null || s2 == null || s2.length() < 1 || s1.length() < s2.length()) { return -1; } char[] str1 = s1.toCharArray(); char[] str2 = s2原创 2021-12-18 19:14:58 · 231 阅读 · 0 评论 -
07.从暴力递归到动态规划
从暴力递归到动态规划暴力递归暴力递归就是尝试1,把问题转化为规模缩小了的同类问题的子问题2,有明确的不需要继续进行递归的条件(base case)3,有当得到了子问题的结果之后的决策过程4,不记录每一个子问题的解常见的4种尝试模型1)从左往右的尝试模型2)范围上的尝试模型3)多样本位置全对应的尝试模型4)寻找业务限制的尝试模型熟悉什么叫尝试?打印n层汉诺塔从最左边移动到最右边的全部过程public static void hanoi(int n) { if (n原创 2021-12-18 19:14:00 · 169 阅读 · 0 评论 -
06.并查集结构和图相关算法
并查集结构和图相关算法贪心算法贪心算法求解的标准过程1,分析业务2,根据业务逻辑找到不同的贪心策略3,对于能举出反例的策略直接跳过,不能举出反例的策略要证明有效性这往往是特别困难的,要求数学能力很高且不具有统一的技巧性1.题目一一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。给你每一个项目开始的时间和结束的时间你来安排宣讲的日程,要求会议室进行的宣讲的场次最多0返回最多的宣讲场次。// 会议的开始时间和结束时间,都是数值,不会 < 0public stat原创 2021-12-06 16:30:38 · 146 阅读 · 0 评论 -
05.打表技巧和矩阵处理技巧
打表技巧1)某个面试题,输入参数类型简单,并且只有一个实际参数2)要求的返回值类型也简单,并且只有一个3)用暴力方法,把输入参数对应的返回值,打印出来看看,进而优化code1.小虎去买苹果,商店只提供两种类型的塑料袋,每种类型都有任意数量。1)能装下6个苹果的袋子能装下8个苹果的袋子小虎可以自由使用两种袋子来装苹果,但是小虎有强迫症,他要求自己使用的袋子数量必须最少,且使用的每个袋子必须装满。给定一个正整数N,返回至少使用多少袋子。如果N无法让使用的每个袋子必须装满,返回-1pub原创 2021-12-03 15:46:44 · 105 阅读 · 0 评论 -
04.二叉树的递归套路
二叉树的递归套路二叉树的递归套路1)假设以X节点为头,假设可以向X左树和X右树要任何信息2)在上一步的假设下,讨论以X为头节点的树,得到答案的可能性(最重要)3)列出所有可能性后,确定到底需要向左树和右树要什么样的信息4)把左树信息和右树信息求全集,就是任何一棵子树都需要返回的信息S5)递归函数都返回S,每一棵子树都这么要求6)写代码,在代码中考虑如何把左树的信息和右树信息整合出整棵树的信息1.判断是否是平衡二叉树public static boolean isCBT2(Node he原创 2021-12-03 15:46:12 · 112 阅读 · 0 评论 -
03.二叉树的基本算法
二叉树的基本算法1.二叉树的先序、中序、后序遍历递归序public static void f(Node head) { if (head == null) { return; } // 1 f(head.left); // 2 f(head.right); // 3}先序:任何子树的处理顺序都是,先头节点、再左子树、然后右子树//递归public static void pre(Node head) { if原创 2021-12-03 15:45:41 · 122 阅读 · 0 评论 -
02.链表经典算法题
链表经典算法题1.快慢指针1)输入链表头节点,奇数长度返回中点,偶数长度返回上中点class Node{ public int value; public Node next;public Node(int value) { this.value = value; next = null;} public static Node midOrUpMidNode(Node head) { if (head == null || head.next == nu原创 2021-12-01 23:39:43 · 502 阅读 · 0 评论 -
01.经典排序算法笔记
经典算法笔记及源码1.选择排序public static void selectionSort(int[] arr) { if (arr == null || arr.length < 2) { return; } // 0 ~ N-1 找到最小值,在哪,放到0位置上 // 1 ~ n-1 找到最小值,在哪,放到1 位置上 // 2 ~ n-1 找到最小值,在哪,放到2 位置上 for (int i = 0; i < ar原创 2021-11-30 17:02:18 · 402 阅读 · 0 评论