自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(509)
  • 资源 (7)
  • 收藏
  • 关注

原创 LRU缓存[线性表 -> 链表 -> hash定位 -> 双向链表]

对于LRU缓存,记忆根在hash + 双向链表,而分析的逻辑为线性表 -> 链表 -> hash定位 -> 双向链表 -> 双向链表。除此之外,泛型化 / loadfactor扩容 / gc压力 / 函数化 / 并发lru都需要注意

2022-07-31 12:11:50 313

原创 go pprof性能调优工具

go pprof简介

2023-04-29 15:17:49 985 1

原创 Go工程基础知识

记录Go工程基础知识。

2023-03-26 15:40:05 879

原创 等差子数组[O(n)判断数组是否为等差数列]

如何判定一个数组是否为等差数列,可以直接排序O(nlogn),再不断求相邻数之间的差值,通过前后差值一致+传递性,完成等差数列的判定。但这没有充分利用等差数列的特性,强行将数排序,不如把每个数在等差数列的位置记下来,实现空间换时间。

2023-03-24 17:29:57 358

原创 Git基础知识

记录git基础知识,包括基础命令及其背后的原理。

2023-03-19 20:06:13 478 2

原创 分割两个字符串得到回文串[抽象--去除具体个性取共性需求]

抽象去个性留共性,是因为具体个性对于解决问题是个累赘。少了累赘,直击需求,才能进行问题转换或者逻辑转换。

2023-03-18 20:11:52 561

原创 给定行和列的和求可行矩阵[算法题的两种思考路径]

算法题的两种思考路径前言一、给定行列和限定求可行矩阵二、分析问题,寻找思考逻辑总结参考资料前言对于算法题,有时没顾太多细节,凭对题型的直觉就知道用什么方法,然后求解。但碰到从未遇到过,或者说无强烈固定套路可循的算法题,就需要分析问题,并记录下来,寻找规律和思考角度,完成方案的制定。可先凭直觉解题,再凭分析把题理解透彻。一、给定行列和限定求可行矩阵二、分析问题,寻找思考逻辑// 通过整体限制,寻找局部元素的可能性。// 有行和,有列和,找元素。// 一维情况下,有行和,如何寻找元素(非负),先

2023-03-14 21:29:19 173

原创 使数组和能被P整除[同余定理+同余定理变形]

同余定理非常经典,采用前缀和 + map,当两个余数前缀和为一个值时,则中间一段子数组刚好对P整除。但是能否找到前面是否有一段子数组和可以对P整除呐?反向思考,找map[P - mod]就知道中间一段子数组和对P取余为mod,前面一段子数组和对P取余为0.

2023-03-10 19:48:24 592

原创 节点间通路[go 使用队列记录]

在图中,寻找起点到目标点的步数/是否存在路径相关,bfs相对dfs更快,毕竟空间换时间了,双向bfs会更快一点,毕竟一层一层的扩展起来非常大,队列要存太多元素。

2023-03-09 11:05:55 103

原创 花括号展开II[栈模拟dfs]

递归调用,代码非常的简洁。但是可以通过显式栈来模拟栈中的内容,锻炼自己的代码能力,清楚知道栈帧中需要的内容。

2023-03-08 22:53:02 286

原创 使字符串平衡的最少删除次数[动态规划+状态压缩+中心划分思想]

动态规划,就是把问题分解成相同性质规模越小的递推问题,而有时候不仅仅是知道当前的什么状态就可以了,有时候需要对当前进行细分类,从而变成二维dp,或者高维dp。除此之外,中心划分思想也是一个经典的算法思想。

2023-03-06 22:33:31 146

原创 按位与为零的三元组[掩码+异或的作用]

当a + b = 0时,我们能够很清楚的知道b是个什么值,b = 0 - a = -a,如果当a & b = 0时,我们能够很清楚的知道b是什么值吗?

2023-03-04 15:50:05 451

原创 保证文件名唯一[map计数]

map的key使用起来还很简单,但是value要存什么,就需要对题有一定的理解和问题转换,有时不是死板的存一个set进去,或许存一个变量就替代了set,此时说明set中前面存的所有对题解都没关系,可以抽象舍弃。

2023-03-03 12:19:18 102

原创 阶乘后的零[挖掘规律+动态规划]

想要计算阶乘后的0有多少,可以直接算出阶乘值,再不断对10取余。但是如果n比较大,这种方法是根本行不通的,只能挖掘规律。

2023-02-28 23:44:05 136

原创 Type and Value

reflect.Type和reflect.Value是go 反射的两大基本类型,一个管变量的类型方面,一个管变量的值方面。

2023-02-27 19:49:47 261

原创 context.Context

context是go语言的一个并发包,一个标准库,用于goroutine之间的退出通知。

2023-02-27 17:26:10 327

原创 得分最高的单词集合[二进制枚举]

二进制枚举是把每个节点当作二进制的1bit,0表示未选择,1表示选择,就像是寻找子集一样,这样就可以减少DFS调用栈的开销。

2023-02-26 22:43:07 105

原创 交换字符使得字符串相同[贪心]

贪心算法,必须先看清楚有哪些选择,才能在这些选择的基础上进行贪心,做最优选择,除此之外,还得看局部最优会不会形成全局最优,否则无法贪心。

2023-02-25 12:37:11 331

原创 按字典序排列的最小的等价字符串[拆解并查集]

并查集有什么用?并查集是什么?搞懂这两个问题,相关的并查集问题就变得非常easy!

2023-02-24 23:06:00 672

原创 回文子串的数量[寻找回文子串的完整思路过程]

回文字符串,就是从左遍历和从右遍历的字符是相同顺序的,转换一下,就是该字符串是对称的。寻找回文子串面临两个直接的问题,1-如何确定一个子串?2-如何判断该子串是否为回文串?

2023-02-20 12:19:53 966

原创 最大平均通过率[优先队列]

优先队列的本质是,一个堆 + FIFO的队列,即一个可以有序出队的队列。而使用优先队列最关键的点就是堆的比较规则。

2023-02-19 10:32:10 67

原创 找出给定方程的正整数解[单增或者有序概念与二分&双指针的紧密联系]

双指针取值常用于有序/单增/单减这些场景中,利用有序大大降低时间复杂度,如果没序,就O(nlogn)排个序,也比O(n方)好。同样的,二分法也是在同样的场景中,有序/单增/单减,将时间复杂度降到O(logn),非常方便。

2023-02-18 12:53:28 156

原创 表现良好的最长时段[前缀和思想&子数组]

对于子数组/子串问题,紧密连续前缀和/滑动窗口/单调栈;挖掘内在规律,可以简化代码,降低时空复杂度或消耗量。

2023-02-15 18:07:50 252

原创 替换子串得到平衡字符串[map计数+滑动窗口]

对于子串问题,确定左边界和有边界,就能确定一个子串,暴力取子串,时间复杂度O(n2)。有时挖掘内在规律的限定,或者问题所限定,就可以采用滑动窗口寻找子串,时间复杂度O(n)。

2023-02-13 22:15:20 287

原创 字母板上的路径[提取公共代码,提高复用率]

写代码,在提高效率的同时,要方便人看,这个人包括自己。大函数要拆分成一些小函数,让每个函数的宏观目的和步骤都显得清晰,读起来才容易懂。除此之外,拆分也有讲究,提取公共代码,尽量减少重复无意义的代码,提高复用率。

2023-02-13 14:08:35 314

原创 装满杯子需要的最短时长[贪心模拟 || 全局贪心]

碰到局部选择,加上结果最值导向,基本就是不断最优解直到求到全局最值,经典的贪心思维,不断选择最优方向,就是一种贪心模拟;而有些问题,可以做到全局角度观察,挖掘其数学规律,以常数级复杂度完成贪心求解。

2023-02-12 13:03:00 266

原创 路径总和[在二叉树上做前缀和]

前缀和思想是快速解决一段连续抽象Node(可以是数组元素/树节点)的抽象操作(可以是和/差/自定义操作)。

2023-02-10 13:19:57 141

原创 设计一个验证系统[LRU思想--双向链表+hash]

设计一个验证码系统,给定生成的验证码和时间,主要设计精力集中在有效验证码的数据结构设计,要求存储好生成的验证码;可重置任何未过期的验证码;统计未过期的验证码数量。

2023-02-09 15:20:38 131

原创 删除子文件夹[字典树 + go变量 + strings.builder的copyCheck()]

字典树;panic: strings: illegal use of non-zero Builder copied by value

2023-02-08 20:16:42 246

原创 分割等和子集[问题转换&限定的01背包]

01背包是动态规划的基础,解决特定的问题,而有的相关算法问题内部潜藏本质问题,需要做到问题转换,问题联系,然后用基础知识解决问题。

2023-02-07 15:26:33 85

原创 行列有序矩阵搜索[二分 && Z字搜索]

从矩阵中搜索一个元素,暴力搜索O(mn)。如果行列有序,则可二分 + 剪枝来进行搜索。除此之外,利用行列同时有序,在搜索的过程中将可搜索空间压缩,直至找到target,为Z字搜索O(m + n)。

2023-02-06 18:56:50 119

原创 计算布尔二叉树的值[叶子节点的巧妙判断方式]

后序遍历,逻辑转换。

2023-02-06 13:24:34 486

原创 乘积最大子数组[前缀积 + 内在规律限定下的逻辑转换]

前缀积 & 逻辑转换

2023-02-05 14:31:48 392

原创 生成平衡数组的方案数[抽象前缀和思想]

空间换时间,利用前缀和快速获得一段子数组的和,或者抽象一段子数组,比如不一定全加,可以加减交替。

2023-01-29 15:22:33 74

原创 比特位计数[动态规划 || bitCount计数]

二进制计数可以直接基于分治去快速统计,如果是连续数的二进制计数,可以利用前面已经计算出的状态进行递推求解,即动态规划。

2023-01-13 11:03:25 588

原创 颠倒二进制[位运算]

颠倒二进制,可以直接将二进制逆序存储,得到新的数;也可分治快速颠倒。

2023-01-11 21:17:37 571

原创 朴素梯度下降

对于求局部最优解的情况,可采用梯度下降逼近最小值。这也是机器学习最基本的东西。

2023-01-11 21:11:10 76

原创 阿拉伯数转中文与英文[找到规律,抽象问题,转换成代码]

如果思考算法的解法方案是一种模拟,那么这一般不是个好的解决方案。对于一个复杂的问题,挖掘其中的规律,把问题抽象处理统一解决,这样代码才会简洁清晰。

2023-01-11 20:41:42 548

原创 缀点成线[巧用变量抽象问题->统一操作]

验证所有点在一条直线上,只需确定y=kx + b的k与b即可,但是k可能是无穷大,即直线垂直的时候。将函数抽象为x=0*y + b,这样还不够抽象,将x/y都视为一个变量时,两种情况对调传递变量即可统一操作。

2023-01-11 14:45:46 43

原创 如何求解欧拉路径?

欧拉路径 == 从图的一个节点出发,每条边只访问一次,遍历完了所有图节点,这条路径为欧拉路径。

2022-12-15 13:45:36 841

1.java入门.pdf

Java环境、Maven环境搭建及案例

2021-10-31

入门Java的那几套基本工具和PDF详解

Java初学者,重装系统者,Eclipse换Idea者,换新电脑者,想开始做web项目者。

2021-07-26

字节跳动21届秋招全岗位面经集合.pdf

字节面经

2021-07-18

最新大厂Java面试题(上).pdf

大厂Java面试题

2021-07-18

字节精选面经专辑-2020春招后台-20200705-联合出品.pdf

2020字节面经

2021-07-18

jsvc.tar.gz

Linux下tomcat可能确实的文件

2021-07-18

空空如也

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

TA关注的人

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