算法
阿康不会敲代码
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 19. 正则表达式匹配
这题太坑了 想用状态机写,越写坑越多。原创 2023-04-23 23:54:18 · 100 阅读 · 0 评论 -
575. 分糖果
【代码】575. 分糖果。原创 2023-04-23 21:35:59 · 101 阅读 · 0 评论 -
剑指 Offer II 041. 滑动窗口的平均值
还是直接用队列比较好,先入先出。用数组模拟队列确实丑陋不少。原创 2023-04-23 21:28:59 · 93 阅读 · 0 评论 -
二分法模板以及例题 (三)
由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。输入:numbers = [2,7,11,15], target = 9。输入:nums1 = [1,2,2,1], nums2 = [2,2]输入:arr = [1,2,3,4,5], k = 4, x = 3。解释:最长递增子序列是 [2,3,7,101],因此长度为 4。输入:nums = [10,9,2,5,3,7,101,18]输入: nums = [2,2,3,4]输出:[1,2,3,4]原创 2023-04-03 23:01:46 · 301 阅读 · 0 评论 -
二分法模板以及例题 (二)
解题思路:需要一个先增后降的位置,即如果找到是递增的则排除左边,如果找到是递减的则排除右边,峰不会重复,如[1,2,2,1]这样,所以模板一二都可以。要找到第一个小于等于8的值,前面是比之,这题是比平方后的值,万变不离其宗,因为数不会重复,所以模板一二都可以。输入:nums = [5,7,7,8,8,10], target = 8。输入: nums = [1,3,5,6], target = 5。解题思路:这题就类似于[1,2,3,4,5,6,7,8]输入:nums = [1,2,1,3,5,6,4]原创 2023-04-03 12:04:17 · 464 阅读 · 0 评论 -
【从零开始的go算法】删除有序数组中的重复项
j是快指针,负责找到一个和nums[i]的不同的值。找到不同的之后i++然后将这个j指的值放到i的位置。双指针秒杀了i为当前在队列中不重复的值的下标。最后返回i+1是因为i是下标,表示长度得加一。原创 2023-03-27 17:31:36 · 91 阅读 · 0 评论 -
【从零开始的go刷题】合并两个有序链表
递归第一步就是找到边界,第二步是找到要保存的数据压入栈中,第三步考虑返回值和赋值的顺序原创 2023-03-27 10:50:45 · 181 阅读 · 0 评论 -
【从零开始的go算法】有效的括号
go没有stack等一系列数据结构,只好用数组模组stack了。大佬喜欢用切片不知道性能怎么样。原创 2023-03-26 18:25:53 · 63 阅读 · 0 评论 -
【从零开始的go算法】最长公共前缀
【代码】【从零开始的go算法】最长公共前缀。原创 2023-03-22 10:05:48 · 55 阅读 · 0 评论 -
【从零开始的go算法】 罗马数字转整数
写的有点冗余,简单模拟。原创 2023-03-22 09:29:27 · 58 阅读 · 0 评论 -
【从零开始的Go刷题】回文数
方法二 int做切分写入数组,前后比较是否相等(双指针)方法一 变成字符串,前后比较是否相等(双指针)golong似乎没有变长数组。原创 2023-03-21 17:06:29 · 92 阅读 · 1 评论 -
【从零开始的Go刷题】两数之和
【代码】【从零开始的Go刷题】两数之和。原创 2023-03-21 16:55:28 · 72 阅读 · 0 评论 -
KMP算法面试题
面试题:写一个在一个宇符串(n)中寻找一个子串(m)第一个位置的函数。10+G的日志中,如何快速地查找关键字?原创 2022-07-12 22:47:11 · 203 阅读 · 0 评论 -
二分法模板以及例题 (一)
当我们将区间[l, r]划分成[l, mid - 1]和[mid, r]时,其更新操作是r = mid - 1或者l = mid;当我们将区间[l, r]划分成[l, mid]和[mid + 1, r]时,其更新操作是r = mid或者l = mid + 1;算法思路:假设目标值在闭区间[l, r]中, 每次将区间长度缩小一半,当l = r时,我们就找到了目标值。[0,1,2,4,5,6,7] 转化成[4,5,6,7,0,1,2] 找目标值 找不到返回-1。根据上面的模板做如下二分查找题。原创 2022-06-24 17:55:32 · 142 阅读 · 0 评论