算法
慈眉善目张先森
为了不像瓜皮一样的活着....
展开
-
算法-滑动窗口
算法-滑动窗口 开始撸常用算法 理解滑动窗口 在嵌套循环中解决重复字符串或者区域内求最大和这种问题的时候,一般可以使用双循环来解决问题,但是使用滑动窗口可以单循环解决; 例如以上求连续无重复最大字符串长度,我们可以直接两个for循环进行记录比较一直到循环结束,但是如果用滑动窗口只需一次循环即可; 先确定左指针指向数组首位,并取元素i=0 此时窗口宽度为1,我们开始判断窗口是否能够扩大; 原窗口不包含B所以扩大,并将指针右移,此时窗口包含AB; 然后继续判断是否能扩大,判断是否能扩大可以理解为判断是否可原创 2020-07-01 13:46:46 · 440 阅读 · 0 评论 -
算法-快速排序
算法-快速排序 开始撸常用算法 理解快速排序算法 快速排序是冒泡排序的一种改进;通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列; 将画图展示快速排序算法的逻辑 有一组数据如下 这里我们将指定一个key,这个key默认可以为最后一个数据也可以为第一个数据,本分析使用的是第一个数据作为key; 为了保证key的随机性,可以生成一个left+1到right之间的原创 2020-06-30 12:15:28 · 1791 阅读 · 0 评论 -
算法-堆排序
算法-堆排序 开始撸常用算法 理解堆 堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。 堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树; 将根节点最大的堆叫做最大堆或大根堆(或者也可以叫做大顶堆)根节点最小的堆叫做最小堆或小根堆(小顶堆) 我们以一个常见数组为例,将转化为大顶堆: 数组5273614,红色为下标, 先直接按照普通树画堆图 3614因为没有子分支了,将其称为叶,那么527即为非叶节点;原创 2020-06-29 17:30:12 · 203 阅读 · 0 评论