数据结构
文章平均质量分 78
Ch.yang
try{ coding } catch { bug }
展开
-
【算法】笔记:LeetCode 3. 无重复字符的最长子串
今天写了一道题LeetCode 3. 无重复字符的最长子串,思路还是不难的。初始版本自己写的,看了别人的答案觉得自己写的太丑了。于是乎,借鉴《重构》的思想(LeetCode 提供测试用例和运行,保障重构安全,真是太好了),把自己的版本重构下,记录下过程。原创 2023-02-11 20:38:05 · 108 阅读 · 0 评论 -
【数据结构】布隆过滤器 BoomFilter 的应用场景
对比数据结构的区别,从其空间、时间复杂度下手观察。BoomFilter 特殊的地方在于它在元素存储上做了努力。本文归纳下 BoomFilter 与 HashTable 的区别,进而引出 BoomFilter 善于支持的应用场景。原创 2023-02-05 12:35:12 · 775 阅读 · 0 评论 -
【算法】AOE网找关键活动、关键路径
关键路径是什么?整个活动网影响整体耗时的路径。如果活动网没有任意一个分叉,所有节点连起来也为一条关键路径。找关键路径用于解决什么问题?项目推进中,如果要压缩工期,找到关键路径,并减小关键活动的耗时才能减少整体耗时,否则会做无用功。红色的边 = 关键活动。红色边 + 经过的节点 = 关键路径。存在关键路径的前提状态—— 图的顶点活动—— 图的边看本文需要具备的基础拓扑排序、逆拓扑排序参考王道教程,例子来源于王道。原创 2021-09-18 17:37:29 · 6161 阅读 · 3 评论 -
【算法】O(n2)时间复杂度和O(nlogn)排序算法的简要分析
排序算法的概述排序算法按时间复杂度分可以分为O(n2) 和 O(logn)O(n2) 排序算法流程分析1234.n个数已有序5.开始扫描第n+1个数n个无序序列外层遍历遍历至第n个数内层遍历外层遍历的时间复杂度是n,内层遍历的时间复杂度也是n,由于嵌套关系,总的时间复杂度就是O(n2) 。O(n2) 排序算法都使用上述的流程,典型的代表有选择排序 、插入排序选择排序123value和...原创 2020-03-15 00:54:14 · 3766 阅读 · 1 评论 -
【算法】求100以内的所有素数,使用数组优化
普通解法 public static void getE(int size){ int count = 0; for (int i = 2; i < size; i++) { // 默认所有数都是素数 boolean flag = true; for (int j = 2; j <...原创 2019-10-20 19:46:54 · 4451 阅读 · 0 评论 -
【算法】从斐波那契问题看待数据结构和算法
题目回顾求斐波那契数列的第n个数1, 1, 2 , 3, 5,8,… /** * 递归算法 * @param n 第n个数 * @return 第n个数的值 */ private static long Fibonacci(int n) { if(n == 1 || n == 2) { ret...原创 2019-10-20 18:58:51 · 218 阅读 · 0 评论 -
【算法】求二叉树两节点的最近公共祖先 迭代解法 Stack + Map + Set
算法拆分遍历树广度优先遍历(层序遍历) – 辅助栈 Stack // 辅助栈 Stack<TreeNode> stack = new Stack<>(); // 遍历前压栈进根节点 stack.push(root); // 遍历树,广度优先遍历, 每次遍历前 pop 一个元素 while (!stack.isEmpt...原创 2019-09-02 22:08:23 · 283 阅读 · 0 评论 -
【算法】回溯时集合操作 保持对象的独立性
题目/** * @Author james * @Description 给定一个没有重复数字的序列,返回其所有可能的全排列。 -- 使用数组记录状态 * * 示例: * * 输入: [1,2,3] * 输出: * [ * [1,2,3], * [1,3,2], * [2,1,3], * [2,3,1], * [3,1,2], * [3,2,1...原创 2019-08-27 11:44:16 · 140 阅读 · 0 评论 -
【算法】链表反转 -- 递归解法
链表反转 递归 迭代原创 2019-07-07 00:17:14 · 1132 阅读 · 0 评论 -
【算法】算法第四版学习笔记 -- 冒泡排序法优化
package bubble_sort;import java.util.Arrays;import sort.Example;public class BubbleOptimization extends Example { public static void sort(Comparable[] a) { int N = a.length; int count = 0;...原创 2019-01-06 20:18:11 · 241 阅读 · 0 评论 -
【算法】链表反转 -- 迭代解法
链表反转 迭代原创 2019-07-06 11:35:18 · 253 阅读 · 0 评论 -
【算法】已知必存在众数,求该众数 -- Boyer-Moore 投票算法
LeetCode的思路演绎算法思路题意:必存在众数 -》 在一个数组中,有一个数拥有找过一半的占有率,这个数记为A若A和其他数组中的数进行选举,投票人只能是数组中的数。则A必赢(因为人数上已经过半)。解题的关键就是:找到票数最高的人。改动LeetCoded的演绎/** * @Author james * @Date 2019/7/10 * @Description...原创 2019-07-10 22:03:17 · 194 阅读 · 0 评论 -
【算法】已知必存在众数,求该众数 -- 分治法
分治法应用场景之一:大学选毕业生代表【分】提出【大范围问题 】 校长告诉大四级长:从所有大四学生中选出毕业生代表处理为【小范围问题】大四级长告诉每个系主任:从各自的系里面选一个系学生代表再处理为【最小范围问题】系主任告诉每个班主任:从各自的班里选一个班级学生代表【治】最先反馈【最小范围问题】每个班主任分别告诉系主任:这是我们班级学生代表。每个系主任从班级代表里面选...原创 2019-07-10 21:14:51 · 1406 阅读 · 3 评论 -
【数据结构】常见的数据结构
1. 数组Java的数组是引用类型,实例化后成为一个对象。数组在内存中是一片连续的区间,具有顺序性的数据适合存放。数组拥有索引的功能和.length的原生方法,是最底层的数据结构。是组成高级数据结构的基石。动态数组数组是静态的容器,实例化后,对应的数组大小是确定的,内存空间也是连续的。动态数组解决的问题是,当存放的数据大小不确定时,数组大小进行自适应。自适应的过程实质是新创建一个大小不...原创 2019-07-03 15:00:34 · 240 阅读 · 0 评论