随笔分类 - 数据结构与算法
摘要:动态规划: 通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量:一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接查表。这种做法在重复子问题的数目关于输入的规模呈指数增长时特别
阅读全文
摘要:morris遍历算法可以将空间复杂度将为 O(1),从而实现时间复杂度为O(n),而空间复杂度为O(1)的遍历算法。 morris算法实现规则: 代码实现: 主函数类: package Supplement; import Tree.TreeNode; public class MorrisMain
阅读全文
摘要:KMP算法是一种改进的字符串匹配算法,核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。 例题: 在字符串str1中匹配str2 str1=“abbbcchabbbccikkkabciabck
阅读全文
摘要:图结构题目 图结构通用结构类 图: package Graph; import java.util.HashMap; import java.util.HashSet; public class Graph { public HashMap<Integer,GraphNode> nodeHashMa
阅读全文
摘要:二叉树结构面试题目及解法 用到的树形结构类 package Tree; public class TreeNode { int value; TreeNode left; TreeNode right; public TreeNode(int value){ this.value = value;
阅读全文
摘要:链表结构面试题 以下题目通用的链表结构类 package Link; public class LinkNode { public int value; public LinkNode next; public LinkNode rand; public boolean isCopy; public
阅读全文
摘要:基础排序算法 前置方法:数组元素交换方法 public void swap(int i,int j,int[] arr){ int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } //位运算的数组元素交换 //使用前提:确保交换的俩个元素的位置不同,如果
阅读全文
posted @ 2022-01-27 21:45
彬哙
摘要:master公式: T(n) = a * T(N/b) + O(N^d); 当: log b A < d 时,程序的时间复杂度为:O(N^d); log b A > d 时,程序的时间复杂度为:O(N^log b A); log b A = d 时,程序的时间复杂度为:O(N^d * log N);
阅读全文
摘要:异或运算实现数值交换 package dataStructuresAndAlgorithms; public class BitOperation { public static void main(String[] args){ int a = 2; int b = 3; a = a^b; //
阅读全文