算法
诗与猿方
一个乐于分享、乐于交流的互联网从业者,欢迎关注与私信
展开
-
面试题——算法:字符串按指定顺序排序
1、将顺序表转换为hashMap,key = a-Z,value = 对应的顺序,这样就能最大限度的。2、之后通过遍历输入的字符串,自定义sort方法,通过比较map中对应的顺序,进行排序。a对应 97 z对应122。0对应 48 9对应57。A对应65 Z对应904。原创 2023-04-26 19:42:08 · 152 阅读 · 0 评论 -
算法------雪花算法简介
数据库扩展的主要方式:业务分库,主从复制(实现读写分离)、数据库分表数据库分表:将不同业务数据分散存储到不同的数据库服务器,能够支撑百万甚至千万用户规模的业务,但如果业务继续发展,统一业务的单表数据也会达到单台数据库服务器的处理瓶颈。此时需要对单表进行数据拆分。有两种方式: 垂直拆分和水平拆分。原创 2023-02-17 11:22:35 · 384 阅读 · 0 评论 -
算法------手写LRU算法
具体实现逻辑: 把缓存放到双向链表当中,最近使用过、或新放入的缓存,放到队头,而最久未使用的数据,放在队尾巴。需要:双线链表(Node节点,头结点、尾结点,链表长度,以及链表总长度、和Map[key]value)* 1.链表中已存在当前元素 ,则覆盖原value,并且将当前元素放入队头。当容量满时,将队头数据指定为,最新的数据,将队尾数据移除。意思是:当缓存容量满的时候,淘汰最近很少使用的数据。* 2.2 如果链表长度已满,则删除队尾,放入队头。* 2.1 如果链表长度没满,则放入队头。原创 2022-12-09 13:54:20 · 1089 阅读 · 0 评论 -
排序算法------ 归并排序
3.1.从最小单位形成:有序数组。3.2.比较有序数组的顺序。3.对最小单位进行排序。原创 2022-12-02 10:19:02 · 89 阅读 · 0 评论 -
LeetCode------(Java第1题)两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。利用key–value的对应关系,key存储 target - num[i]的值,value存放数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。暴力循环每个节点,判断是否和为target。你可以按任意顺序返回答案。原创 2022-11-30 20:52:28 · 79 阅读 · 0 评论 -
数据结构算法(一)
算法的复杂度1.时间复杂度执行算法所需要的计算工作量(计算资源有限,输入数据量很大的情况下,不同算法耗费的时间差异极大)2.空间复杂度算法需要消耗的内存空间算法的时间复杂度基本指令——程序执行消耗的时间单位算数指令、数据移动指令、控制指令int a=1;运行时间1if(a>1){};运行时间1for(int i=0;i<N;i++){sout(i)};运行时间3N+2不同的算法,运行时间T(n)随着 输入规模n的增长速度是不同。其实只需要知道时间复杂度n的最高次原创 2022-05-11 09:44:06 · 90 阅读 · 0 评论 -
LeetCode------(Java第1046)最后一块石头的重量题
题目描述:有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。解答:自己没想出来,学习LeetCode的高赞评论。重点:1.递归的思想。重点:2.A原创 2020-12-30 15:21:03 · 151 阅读 · 0 评论 -
红黑树原理源码---------红黑树原理
一、红黑树基本性质每个节点,要么是红色,要么是黑色 说明节点具有颜色属性根节点 黑色每个叶子节点(NIL)是黑色 ,NIL:空节点这里的叶子节点,是以前的叶子节点下:包含两个值为【NIL】的 空节点 ,是黑色。每个红色节点的子节点一定都是黑色。 不能有两个红色节点相连。任意一节点到每个叶子节点的路径都包含【数量相同】得黑节点,俗称【黑高】。*注意:红黑树并不是完...原创 2020-03-13 17:27:34 · 152 阅读 · 0 评论 -
红黑树原理源码---------平衡二叉树(二分查找算法)
基本概念介绍树(tree)抽象的数据类型。节点、根、叶子。节点的分支大于2,称为多路树。每个节点【最多】有两个子节点称为二叉树。Java中的对象,可以看做节点。引用,看做树干。所经过的节点的顺路排列称为:路径。根节点,子节点,叶节点【没有子节点的的节点】任何一个节点都可看做是一个子树。根节点是一层,根的子节点就是二层,子节点的子节点是三层…以此类推。深度,第一层的节点深度是0...原创 2020-03-05 18:55:24 · 385 阅读 · 0 评论