
算法
文章平均质量分 71
吃猫的大鱼
很懒很懒很懒的一个码农
展开
-
生成唯一id总结
文章目录一、数据库自增长ID1.定义2.优缺点3.应用场景二、uuid生成ID1.定义2.优缺点3.应用场景三、Redis生成ID1.定义2.优缺点3.应用场景四、雪花算法 snowflake1.定义2.优缺点3.应用场景五、美团leaf1.号段模式1.1 定义1.2 双buffer设计1.3 优点1.3 缺点2.雪花模式2.1 定义2.2 时间回拨问题2.3 优缺点一、数据库自增长ID1.定义属于完全依赖数据源的方式,所有的ID存储在数据库里,是最常用的ID生成办法,在单体应用时期得到了最广泛的使用原创 2021-10-07 20:48:35 · 902 阅读 · 0 评论 -
算法之五大算法思想
文章目录前言分而治之动态规划贪心算法回溯算法分支限界前言本篇介绍算法的五大算法思想,如果还不了解算法的基础概念请看一下这篇文章:初识数据结构和算法分而治之把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题,直到最后子问题小到可 以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序, 归并排序),傅立叶变换(快速傅立叶变换),大数据中的MR,现实中如汉诺塔游戏。分治法对问题有一定的要求:该问题缩小到一定程度后,就可原创 2021-08-12 23:30:36 · 1230 阅读 · 0 评论 -
初识数据结构与算法
文章目录数据结构概述分类程序中常见的数据结构算法复杂度时间复杂度空间复杂度总结数据结构概述数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。分类从关注的维度看,数据结构可以划分为数据的逻辑结构和物理结构,同一逻辑结构可以对应不同的存储结构。逻辑结构反映的是数据元素之间的逻辑关系,逻辑关系是指数据元素之间的前后间以什么形式相互关联,这与他们在计算机中的存储位置无关。逻辑结构包括:原创 2021-08-12 23:11:14 · 783 阅读 · 0 评论 -
高频算法题之LRU
文章目录前言什么是LRU算法实现思路LRU代码实现总结前言面试官:你了解过reids的内存淘汰策略么?面试者:嗯,了解过,biubiu。。。面试官:打断一下,如果让你去实现LRU算法,你该如何实现?面试者:我就会用linkedHashMap实现。。。面试官:好了,你的情况我大概知道了,你先回去等通知吧面试者:就是又挂了呗。。什么是LRULRU 缓存淘汰算法就是一种常用策略。LRU 的全称是 Least Recently Used,也就是说我们认为最近使用过的数据应该是是「有用的」,很久都没原创 2021-07-04 23:04:16 · 706 阅读 · 1 评论 -
算法之冒泡排序优化
文章目录前言冒泡排序实现冒泡排序优化总结前言面试官: 冒泡排序了解吗?请实现一下?面试者:了解,最基础的交换排序算法。面试官:请介绍一下冒泡排序的特点?面试者:时间复杂度为O(n2),空间复杂度为O(1),属于稳定的排序算法。面试官:如果还是用冒泡排序,请问如何优化它?面试者:(内心:啥?不是应该问快速排序什么的么?冒泡排序还怎么优化?)可以使用快速排序等算法比冒泡排序算法效率高,冒泡排序的优化没怎么了解。面试官:那今天的面试就先到这里,你回去等通知吧面试者:这就挂了?我准备了好多排序算原创 2021-06-27 23:52:02 · 710 阅读 · 0 评论 -
最常见算法面试题
文章目录前言一、算法好处二、高频面试算法题1.链表反转2.环形链表3.大数相加4.冒泡排序优化5.LRU实现三、五大常用算法面试题1.分治法2.动态规划3.贪心法4.回溯法5.分支限界法前言算法题是现在面试必考题,作者通过最近面试复盘并总结一下相关的算法题,会持续更新。一、算法好处算法学习不仅仅是应付面试,更重要是思维得到了提升,特别是逻辑推理能力,特别是在遇到大流量等业务场景下都需要用算法的思维做设计和优化,还有就是极限的压榨硬件的性能等等。ps:千万别把学习算法当成应付面试,这样的心态很难学好原创 2021-06-27 23:12:52 · 1018 阅读 · 0 评论 -
高频算法题之链表反转
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码原创 2021-06-27 22:36:14 · 1062 阅读 · 0 评论 -
高频算法题之两数之和
文章目录前言题目解题思路代码实现测试总结前言复盘一下最近面试遇到简单关于算法的面试题,本篇介绍的是大数相加的算法实现。题目面试官: 请你说一下如何实现2个大数相加的业务?面试者:这个简单,用long接收数字,再计算不就好了。面试官:那如果是这个大数连long都无法装下呢,如100位的大数。面试者:会不会是题目出错了?面试官:题目没有错,今天就先面试到这里回去等通知吧。面试者:###xxxx。。。解题思路通过比较2个大数的字符长度来确认数组的长度 :maxLength+1;将2个原创 2021-06-21 14:44:53 · 727 阅读 · 0 评论 -
高频算法题之环形链表
文章目录前言算法题遍历链表HashSet快慢指针快慢指针解法代码总结前言分享一下最近面试遇到过的简单算法题,本篇介绍的是如何判断链表有环相关的3种方法。算法题有一个单向链表,链表中有可能出现环,如下图所示。如何用程序判断该链表是否为环链表?遍历链表从头结点开始,依次遍历单链表中的每一个节点,每遍历一个新节点,就从头检查新节点之前的所有节点,用新节点和此节点之前所有的节点依次做比较,如果发现新的节点和之前的某个节点相同,则说明该节点被遍历过2次,则可判断为有链表有环。有点类似于冒泡排序原创 2021-06-20 22:25:50 · 613 阅读 · 0 评论