随笔分类 - 数据结构与算法
摘要:通过应用场景,理解一致性hash算法,优缺点、存在问题,解决问题
阅读全文
摘要:常见基本排序 选择排序 基本思路:从第一位开始标记,每次选出最小数字与标记位交换 代码实现: private static void selectSort(int[] arr) { if(arr == null || arr.length < 2){ return; } for (int i
阅读全文
摘要:队列例子 猫狗队列 宠物、狗和猫的类如下: 实现一种狗猫队列的结构,要求如下: 用户可以调用add方法将cat类或dog类的 实例放入队列中; 用户可以调用pollAll方法,将队列中所有的实例按照进队列 的先后顺序依次弹出; 用户可以调用pollDog方法,将队列中dog类的实例按照 进队列的先后
阅读全文
摘要:概念 树:是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。 二叉树:是一种特殊的树。 结点的度:结点拥有的子树个数 叶结点(叶):度为0的结点,即没有儿子的结点 分支结点:度不为0的结点 兄弟结点:具有相同父亲的结点 树的度:树中最大的结点度 结点的层次:根为第一层,依次类
阅读全文
摘要:桶排序、计数排序、基数排序的介绍1,非基于比较的排序,与被排序的样本的实际数据状况很有关系,所以实际中并不经常使用 2,时间复杂度O(N),额外空间复杂度O(N) 3,稳定的排序 例子 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时 间复杂度O(N),且要求不能用非基于比较的排序 题目:用
阅读全文
摘要:例一 给定一个数组arr,和一个数num,请把小于等于num的数放在数 组的左边,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N) 例一(升级版) 给定一个数组arr,和一个数num,请把小于num的数放在数组的 左边,等于num的数放在数组的中间,大于num的数放在数组
阅读全文
摘要:比较类排序: 非比较类排序: 稳定性的概念: 假定待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保存不变,称这种排序算法是稳定的,否则称为不稳定的。 稳定的排序算法: 冒泡 插入 归并 计数 基数 桶 不稳定的排序算法: 选择 快速 希尔 堆 冒泡排序 选择排序
阅读全文
摘要:认识时间复杂度常数时间的操作:一个操作如果和数据量没有关系,每次都是 固定时间内完成的操作,叫做常数操作。时间复杂度为一个算法流程中,常数操作数量的指标。常用O (读作big O)来表示。具体来说,在常数操作数量的表达式中, 只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分 如果记为f(N),
阅读全文
摘要:给定一个整形正方形矩阵arr,请把改矩阵调整成顺时针选择90度的样子。 package suanfa; public class demo3 { public static void main(String[] args) { int[][] arr={{1,2,3},{4,5,6},{7,8,9}
阅读全文
摘要:参考自:https://blog.csdn.net/qq_38200548/article/details/80688630 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 1.必须在原数组上操作,不能拷贝额外的数组。 2.尽量减少操作次数。 package su
阅读全文
摘要:参考自:https://blog.csdn.net/qq_38200548/article/details/80663818 题目分析:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的 最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:
阅读全文