自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 一文彻底搞懂LRU缓存结构的实现

本文介绍LRU缓存的Java实现方法,采取双向链表+HashMap的方式实现

2023-04-05 12:00:05 404

原创 双向链表的定义及基本操作

《匠人的算法课II》为数据结构和算法系列课程的进阶课程。本讲为第一讲,大家详细介绍双向链表的定义以及基本操作。

2023-03-31 22:56:52 385

原创 最高效的近似算法——贪心算法

在解决一些问题的时候,有的问题要得到最优解是非常困难的。这个时候我们就不要再执着于最优解了,因为即便得到了最优解也可能是得不偿失的。采用贪心算法求解这个问题是一种折中的好方法。所谓贪心算法就是在对问题求解时,总是做出当前看来是最好的选择。也就是说贪心算法并不从整体最优上考虑问题,算法得到的是某种意义上的局部最优解。而局部的最优解叠加在一起便构成了问题的整体最优解,或者近似最优解。正是因为贪心算法思想简单,且算法效率较高,所以在一些问题的解决上有着明显的优势。...

2021-07-24 09:42:50 2702

原创 一文彻底搞懂递归、备忘录、动态规划

递归: 递归算法是一类非常常用的算法,它是一种直接或间接调用原算法本身的算法。递归算法最大的特点就是“自己调用自己”,对于一些具有递归特性的问题,使用递归算法来解决会更加简单明了,且易于实现。在使用递归算法解决实际的问题时,要自顶向下地将一个大问题拆分成同类的小问题,然后利用同类问题这一特性构造出解决问题的递归函数,也就是这种“自己调用自己”的模型,再通过程序实现这个递归函数。下面通过一个实例理解递归算法。走楼梯问题:...

2021-07-11 21:43:07 2675 2

原创 大厂高频面试系列07- 寻找“单身狗”问题

大厂高频面试系列07- 寻找“单身狗”问题描述:问题1:一个数组中除了一个数字只出现一次外,其余数字均出现偶数次,我们将这个只出现一次的数称为“单身狗”。现在要求只扫描数组一次,找出这个只出现一次的数字。问题2:一个数组中除了三个数字只出现一次外,其余数字均出现偶数次。那么这三个数字就是三只“单身狗”,要求用最小的时间复杂度找出这个三个数字中的任意一个。难度:★★★题目解析:对于第一个问题,有的同学第一感就是将数组排序,然后从头到尾扫描一遍就可以找出答案,但是由于题目对时间复杂度有要

2021-05-15 22:17:23 368 3

原创 大厂高频面试系列06- 渔夫捕鱼问题

大厂高频面试系列06- 渔夫捕鱼问题​描述:A、B、C、D、E共5个渔夫夜间合伙捕鱼,凌晨时都疲倦不堪,各自在河边的树丛中找地方睡着了。待日上三竿,渔夫A第一个醒来,他将鱼分作5份,把多余的一条扔回河中,拿自己的一份回家去了。渔夫B第二个醒来,也将鱼分作5份,扔掉多余的一条,拿走自己的一份,接着C、D、E依次醒来,也都按同样的办法分鱼,问5个渔夫至少合伙捕了多少条鱼?难度:★★程序语言:​一道很经典的面试题,在我找工作的时候就遇到过这道题。本题的特点是看似简单,但是一不小心就容.

2021-05-03 08:19:47 941

原创 大厂高频面试系列05- 最长公共前缀问题

大厂高频面试-05 最长公共前缀问题​描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。举例:输入: ["flower","flow","flight"]输出: "fl"来源:LeetCode题目难度:★★题目分析:我们先从最简单的情况分析这个问题。假设只有两个字符串,计算这两个字符串的最长公共前缀的方法是:将两个字符串从左向右一一比较,直到遇到不相同的字符为止,前面的部分就是它们的最长公共前缀。例如字符串1为”abcde”,字符串2.

2021-04-25 21:27:35 228

原创 大厂高频面试系列04- 寻找丑数

大厂高频面试系列04- 寻找丑数我们把只包含因子2,3,5的数称为丑数。例如6,8都是丑数,而14不是丑数,因为它包含因子7。通常我们也把1当作丑数。编程找出1500以内的全部丑数。注意:使用的算法效率应尽量高。题目难度:★★题目分析:本题最直观的解法是采用穷举筛选法:遍历1~1500这1500个整数,判断每一个数是否是丑数,如果该数是丑数则输出,否则跳过该数继续向下遍历。这个解法的关键是如何判断丑数。根据题目已知,丑数只包含因子2,3,5,而不包含其他任何因子,同时1也是丑数,因此可以

2021-04-22 21:45:23 560

原创 大厂高频面试系列03-最长回文子串问题(LeetCode)

大厂高频面试系列03-最长回文子串问题(LeetCode)题目描述:给定一个字符串S,找出S中最长的回文子串。举例:输入:”babad”输出:”bab”注意:”aba”也是一个有效的答案,输出一个答案即可。题目难度:★★题目分析:本题的难点有两个:一是如何列举出一个字符串中的子串;二是如何判断一个子串是否是回文子串,并且这个回文子串还是最长的那一个。解决了这两个问题,本题就迎刃而解了。对于第一个问题,最常用的解法是利用一个长度可变的滑块,该滑块从字符串的最左端开始向右

2021-04-21 21:27:08 169

原创 大厂高频面试系列02--最长不重复子串问题(LeetCode)

大厂高频面试系列02--最长不重复子串问题题目描述:给定一个字符串,找出不含有重复字符的最长子串的长度。举例:给定"abcabcbb",没有重复字符的最长子串是"abc",那么长度就是3。给定"bbbbb",最长的子串就是"b",长度是1。给定"pwwkew",最长子串是"wke",长度是3。请注意答案必须是一个子串,"pwke"是子序列而不是子串。题目难度:★★★题目分析:要解决最长不重复子串的问题,首先我们应当知道如何找到不含有重复字符的...

2021-04-19 21:31:41 1719

原创 大厂高频面试系列01--最短连续子数组问题(LeetCode)

大厂高频面试系列01--最短连续子数组问题题目描述:给定一个整数数组,请需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。要求找到的子数组应是最短的,请输出它的长度。举例:给定数组:array[7]={2,4,7,6,11,8,19};输出结果:4理由:因为这个最短连续子数组为{7,6,11,8}...

2021-04-18 18:02:42 351

原创 用两个栈实现一个队列

用两个栈实现一个队列

2015-08-23 22:06:53 654

原创 一道有趣奥数题——“丢番图的墓志铭”

一道有趣奥数题——“丢番图的墓志铭”

2015-08-09 22:10:13 5362

原创 找出字符串中对称的子字符串的最大长度

闲来无事翻了翻之前的面试书,有一道题勾起了我的兴趣,题目如下:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。本文将给出该题的解法,深入浅出,详细讲解。

2015-08-07 23:09:09 3086 1

原创 怎样数出有多少个三角形?

怎样数出有多少个三角形?最近在微博里看到一个题目,问这个图形里包含了多少个三角形。网友们众说不一,有说10个,17个,18个。。。 到底有多少个呢?

2015-08-05 22:21:07 8104

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除