![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 51
算法学习分享
Davag
写博客是为了不让自己彻底忘记自己学过的东西哈哈
展开
-
【LeedCode】二分查找算法(一)
2.当left == right时,可能会取到target的下标 left == right是找到target的最后机会,如果a[left]!选取mid(二分查找过程中选取的中点下标):mid = left + (right - left) / 2。该数组的元素是非递减序的,也就是说元素是以增大或不变的顺序排序的,因此待操作数组具有二段性。二分查找算法的时间复杂度是O(logN) ,更优于传统的遍历数组算法值得我们学习。注意二分查找一般使用的前提是:待操作的数组的元素有某种规律也就是要有二阶性,原创 2024-06-20 23:59:25 · 539 阅读 · 0 评论 -
【贪心算法初级训练】在花坛上是否能种下n朵花、碰撞后剩余的行星
0的行星)的值从头覆盖原数组的值新(这里并没有创建新数组,只是对旧数组进行覆盖),覆盖后的数组里的值就是没有发生爆炸的行星,然后重复该过程,创建一个count变量用来作为循环终止判断。1.首先我们先从数组的0位置开始对数组元素进行两两判断,只判断行星爆炸的情况,将爆炸的行星值改为0,第一遍将数组遍历完后,此时还没有结束!给定一个整数数组,表示在同一行的行星。仅需判断要种花的位置, 和它的左位置,右位置已经有花的情况,再下来就是要注意访问数组时索引的范围要在数组范围内。1.两行星碰撞,较小的行星会爆炸。原创 2024-06-17 13:33:37 · 815 阅读 · 0 评论 -
【LeetCode滑动窗口算法】长度最小的子数组 难度:中等
是-->更新结果-->出窗口-->更新结果。2、进窗口-->判断是否满足条件-->否-->进窗口。原创 2024-06-12 23:49:55 · 700 阅读 · 1 评论 -
【双指针算法】原地处理数组的双指针算法思想
找到最后一个复写的元素后按照”从后往前“(因为刚开始从前往后的话,会将后面的元素覆盖掉)的顺序对待处理数组进行复写操作。cur遇到非0元素:swap(a[dest+1], a[cur]),然后++dest,++cur。3、a[cur] == 0则dest += 2 a[cur]!题目要求我们将非0元素放在数组的左边,0元素放在数组的右边,同时保持非0元素的相对位置。dest:用于交换非0元素与0元素。1、dest = -1,cur = 0,判断a[cur]的值。0区间:[dest+1,cur-1]原创 2024-06-09 23:55:05 · 678 阅读 · 1 评论 -
【LeetCode】两数相加(基于单向链表)难度:中等
目录理清题目解题思路题目代码运行结果我们来看一下题目描述: 首先题目要求链表中的节点的值必须在[0,9]之间也就是说我们要处理的数字必为正整数,因此就不会涉及到太复杂的计算,题目其实就是要求对两个链表中的节点的值分别逆序形成两个正整数,再将这两个数相加会形成一个新的数,再将该数逆序后将该数的每一位作为和链表的节点。 首先我们要先创建一个新的链表,这个链表就是最终要求的链表。整个过程必须要对待处理的两个链表进行遍历,由于题目要求将两个链表中的节点的值分别逆序形成两个正整数,也就是说待处理链表的开始节点的值相原创 2024-06-06 19:17:22 · 653 阅读 · 2 评论 -
【经典排序算法】堆排序(精简版)
当向堆中插入新元素时,为了维护堆的性质,需要对该元素进行向上调整。向上调整法就是从新插入的节点开始,通过与其父节点的比较和交换,确保该节点的值不大于(对于大根堆)或不小于(对于小根堆)其父节点的值。当向堆中插入新元素时,为了维护堆的性质,需要对该元素进行向上调整。向上调整法就是从新插入的节点开始,通过与其父节点的比较和交换,确保该节点的值不大于(对于大根堆)或不小于(对于小根堆)其父节点的值。需要注意的是对堆进行向上向下调整算法是要确保堆左子树和右子树是大堆/小堆。大堆:父节点>=子节点的堆。原创 2024-05-31 23:59:46 · 618 阅读 · 0 评论 -
【经典排序算法】哈希直接定址法的变形应用:计数排序(优化版)
我们的思路是:先求出待排序数组中的最大值max和最小值min,在通过求出的最大值max和最小值min来创建一个计数数组其元素个数是max-min+1,遍历待排序数组,将其待排序的值经过a[i]-min(这是利于待排序数组中的负数排序)与计数数组中的索引值(与a[i]-min相同的值)一一对应增加其索引值所对应的计数数组元素值。[1] 当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的。它的优势在于在对一定范围内的整数排序时,它的。原创 2024-05-30 23:45:18 · 499 阅读 · 0 评论 -
【排序算法】选择排序以及需要注意的问题
遍历第一遍数组将数组中的最大值的下标用maxi记录,将数组的最小值的下标用mini记录;第一遍遍历数组结束后将此时数组的最大值与下标为end元素的值交换,数组最小值与下标为begin元素的值交换,然后--begin ++end,如此循环,指导begin原创 2024-05-26 22:07:58 · 626 阅读 · 0 评论