算法和数据结构
文章平均质量分 75
主要记录个人学习算法和数据结构的过程,工作比较忙,更新频率不会很高。
让天地一先
av程序员
展开
-
【算法和数据结构】KMP算法
KMP算法是一种字符串匹配算法,这里拿leetcode第28题举例,方便更好的理解该算法。原创 2023-08-16 17:30:07 · 35 阅读 · 0 评论 -
【算法和数据结构】数组
思想:首先将第一个元素和第二个元素比较,如果第二个小于第一个,则将第一个元素向后移动,将第二个元素插入;思想:取数组左端点l=0,右端点r=n-1,生成一个中间点mid=(l+r)/2,并判断mid和target的大小关系,根据大小关系将数组区间折半之后再进行上述操作,直到找到target的值。思想:首先遍历数组,找出最小的元素,和第一个元素进行交换;例:给定一个n(n≤10⁶)个元素有序整型数组和一个target值,求在O(log₂n)的时间内找到值为target的整型的数组下标,不存在则返回-1。原创 2023-01-18 15:26:59 · 68 阅读 · 0 评论 -
【算法和数据结构】排序
计数排序的代码实现如下。先选择一个数作为基准数pivot,以pivot为基准用双指针遍历数组,将小于pivot的元素集中到数组左边,大于pivot的元素集中到数组右边,双指针会合的位置即为pivot应该在的位置;思想:基数排序思路是将原数组按照位数进行排序,先按个位数的大小将原数组排序,再按十位数的大小排序,依此类推,直到整个数组变得有序。例:给定一个n个元素的数组,数组下标从0开始,采用归并排序将数组按照升序排列。例:给定一个n个元素的数组,数组下标从0开始,采用计数排序将数组按照升序排列。原创 2023-01-18 15:28:37 · 54 阅读 · 0 评论 -
【算法和数据结构】滑动窗口
思想:先初始化一个窗口[i,j],使i=0,j=-1,即为空窗口;当第j个字符出现过时,记录子串的长度并移动滑窗的左边界;思想:创建一个长度为k的窗口,以前k个元素的值作为窗口的初始值;不断地将窗口右移,同时计算窗口中元素的平均数,若满足条件则计数器加1。例:给定一个整数数组arr,和两个整数k和threshold。请你返回长度为k且平均值大于等于threshold的子数组的数量。例:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。,每日凌晨5点到8点直播刷题。注:本文章搬运自个人博客。原创 2023-01-18 15:29:27 · 130 阅读 · 0 评论 -
【算法和数据结构】前缀和
部分和就是给定一个一个数组arr,求其中某一段连续子数组[l,r]的和。通常的做法是遍历l到r之间的元素相加,这样的作法最坏时间复杂度可以达到O(n),如果有m次访问时间复杂度达到了O(mn)。基于对上述问题的优化,我们引入前缀和的概念。原创 2023-01-18 15:30:12 · 120 阅读 · 0 评论