![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode
文章平均质量分 85
完成找工作的算法的完整知识储备
贪睡的蜗牛
记性不好,那就多写博客。。。。
展开
-
双指针、字符串、哈希表、链表、数组总结
vector也能交换 swap(v[1],v[2]);最后是一个趋近的过程,left和right的平均值最后趋于不动,这时候,left可能向右走,可能right向左走,这时候一定一定有规律。输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]也就是返回目标值的返回,没找到返回[-1,-1]用两个二分法找左右边界值设立的如果mid当前值大了,会让right向左移动上面求到的右边界是右边界+1。原创 2023-02-24 10:27:50 · 585 阅读 · 0 评论 -
栈与队列和单调栈总结
top返回栈顶的引用,为空时返回未定义,pop仅是弹出,因此需要先top得到数据后再pop,不能直接让一个数= pop弹出的数,原创 2023-02-14 21:59:19 · 248 阅读 · 0 评论 -
Backtracking algorithm梳理
注意下面这句话回溯法都可以,其实每一层都代表了一个for循环以下面题为例,k=2时是两个for循环,k=50是50个for循环,后者写不出来,但是回溯能够写得出来。原创 2022-10-22 12:09:40 · 572 阅读 · 0 评论 -
贪心算法练习题二
如果按身高排序,身高矮的可以放到前面也可以身高高的放前面(相同身高按第二个值个数来衡量),我们先按身高高的放在前面,这样就可以排,然后按第二个值来重新排列,由于升高高的在前面,后面矮的移动到前面不会影响自己,因此成立。**遍历:**以左向右排序为例,维护一个end和count记录不重叠区域,当下一个区间的开头在我end里面,那么就是重叠的,不要他,否则就以它end为end。无重叠区间碰到重叠的是要想删哪个,这个没有标准,需要确定一个边界,然后才能考虑删除哪个,也就是爪子伸到我空间了,我就可以删掉它。原创 2022-10-13 10:24:37 · 602 阅读 · 0 评论 -
贪心算法练习题
上面承接十张钞票让拿五次,那指定每一次只拿最大的如果能局部最优推出整体最优而且还想不到反例那就试试贪心。有时候不知道自己用了贪心,因为本就应该那么做。原创 2022-10-07 19:51:57 · 489 阅读 · 0 评论 -
动态规划练习题
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1: 输入:nums = [10,9,2,5,3,7,101,18] 输出:4 解释:最长递增子序列是 [2,3,7,101],因此长度为 4。示例 2: 输入:nums = [0,1,0,3,2,3] 输出:4。原创 2022-09-26 09:29:32 · 394 阅读 · 0 评论 -
剑指offer1-20大杂烩
给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。1、先将 aa 和 bb 转化成十进制数,求和后再转化为二进制数。但非常简单的实现基于 Python 和 Java 本身的高精度功能,在其他的语言中可能并不适用,并且在 Java 中:如果字符串超过 3333 位,不能转化为 Integer如果字符串超过 6565 位,不能转化为 Long如果字符串超过 500000001500000001 位,不能转化为 BigInteger伪代码:使用一个变量 carry 表示原创 2022-06-09 14:35:39 · 324 阅读 · 0 评论 -
剑指offer21-31链表
注意有俩哑节点 head和tail,head->next是第一个节点,tail->prev是倒数第一个节点。原创 2022-09-02 09:26:23 · 138 阅读 · 0 评论 -
剑指offer32-42字符串数组的应用
如果后缀表达式有n个字符,那么数字的个数一定是(n+1)/2,操作符的个数一定是(n-1)/2,在申请空间时,最坏情况下,操作数都在前面,在其他情况下每遇见一个操作符就会减少一个数字,所以最坏情况下需要申请空间为(n+1)/2。如果出现当前位置两个元素,后一个单词的元素大于当前元素,那么跳出循环,比如book和baok,a大于o,那么就对了,这两个单词就不用比较了,如果小于,那么直接返回false。题目意思就是求这些图形能勾勒出的最大面积,这个面积可能是多个矩形的公共部分,也可以直接是自己的面积。原创 2022-09-02 09:31:26 · 267 阅读 · 0 评论 -
剑指offer57-61排序-堆
对于第二个条件 abs(i - j)原创 2022-09-02 09:38:00 · 319 阅读 · 0 评论 -
剑指offer62-67排序-前缀树
time”, “me”, “bell” time的me和me重复,所以time ,me变为了time,time和bell没有重复,所以变为了time ,bell。words[0] = “time” ,s 开始于 indices[0] = 0 到下一个 ‘#’ 结束的子字符串,如加粗部分所示 “time#bell#”如果继承词有许多可以形成它的词根,则用最短的词根替换它。前缀树,插入时如果分支存在则用新的值替代原来的值,sum时是计算共同前缀的和,比如求a,则将所以单词是a的单词对应的值全部计算。原创 2022-09-02 09:39:04 · 203 阅读 · 0 评论 -
剑指offer68-77二分查找、排序
给定一个排序的整数数组 nums 和一个整数目标值 target ,请在数组中找到 target ,并返回其下标。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。输入: nums = [1,3,5,6], target = 5输出: 2找目标的下标,找不到输出应该插入的下标。原创 2022-09-02 09:42:51 · 189 阅读 · 0 评论 -
剑指offer79-87二进制枚举、回溯
每一步面临两个选项,要么加入,要么不加入。或者要么加这一个,要么加另一个,那么就适合回溯法。执行每个选项都会生成一个分支。但是执行每一个选项都要消除影响解决该问题需要若干步,每一步又面临若干个选择,最后需要返回所有符合要求的结果,所以本题可以用回溯法解决。原创 2022-09-02 09:46:34 · 427 阅读 · 0 评论 -
剑指offer88-96动态规划
给定两个字符串 s 和 t ,编写一个函数来判断它们是不是一组变位词(字母异位词)。t 是 s的变位词等价于「两个字符串不相等且两个字符串排序后相等」注意:若 s 和 t 中每个字符出现的次数都相同且字符顺序不完全相同,则称 s 和 t 互为变位词(字母异位词)。也就字母个数一样,就是顺序不一样给定一个字符串数组 strs ,将 变位词 组合在一起。 可以按任意顺序返回结果列表。注意:若两个字符串中每个字符出现的次数都相同,则称它们互为变位词。字母异位词的两次词排序后的值是一样的,将这个值作为键,将排原创 2022-07-03 09:35:06 · 226 阅读 · 0 评论 -
剑指offer97-100动态规划二维数组
以下图为例,每一行的两个元素生成下一个元素,而最终结果只是求最右下角的值,那么二维数组可以只用一行的一维数组表示,每次一维数组保存上一行的数据,然后逐渐修改下一行的数据。如果新添加一个元素,这个元素可以是横向添加的一个,也可以是列向添加的一个,但不管横向还是列向添加,都表示父类添加了这个元素。给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。对于当前步,有从上面来的和从左边来的,两个选最小的加上当前的花费。原创 2022-09-02 08:52:54 · 300 阅读 · 0 评论 -
剑指offer101-104背包问题总结
先看知识总结01背包问题分割等和子集加减的目标值最少的硬币数目排列的数目用二维数组表示,列向表示最大重量,横向表示物品1、能否组成2、有几种方式3、最少。原创 2022-08-27 10:26:04 · 230 阅读 · 0 评论 -
剑指offer105-107图问题—深度和广度遍历
1、广度优先遍历类似层序遍历,它是有层次关系的,在以后涉及图的层序遍历就用广度优先,类似树,但比树更高级的是它可以决定树的根节点可以有多个节点。深度优先遍历就是针对树进行前中后序遍历2、一般图是用二维数组来表示,针对图上的点上下左右的移动可以通过{//对上下左右进行遍历 int r = pos . first + d [ 0 ];判断出界 if(r >= 0 && r < mat . size() && c >= 0 && c < mat [ 0 ] . size()) {......原创 2022-08-29 10:02:11 · 337 阅读 · 0 评论 -
剑指offer108-118图问题—深度遍历,广度遍历,并查集
一般而言,如果一个问题是关于事物状态的改变,那么可以考虑把该问题转化为图的搜索问题。原创 2022-09-01 12:00:20 · 304 阅读 · 0 评论 -
贪心算法整理
每次根据问题的当前状态,选择一个局部最优策略,并且不断迭代,最后产生一个全局最优解。每次从当前问题出发,而不考虑之前或之后的状态,做出一个最有利于当前问题的决策,迭代更新问题,不断重复同样的操作直到问题得到解决。例子1:分发饼干不同大小的饼干分发给胃口不同的孩子,目标是满足尽可能多的孩子。思路:从孩子方面:胃口小的应该优先满足,因为最容易满足,被成功分配的概率高从饼干方面:物尽其用,当一个孩子能被多个饼干满足时,应该用最小的一个。策略归纳:当...原创 2022-04-10 12:22:34 · 1396 阅读 · 0 评论 -
《算法图解》阅读笔记
在传统的递归中,典型的模型是首先执行递归调用,然后获取递归调用的返回值并计算结果。以这种方式,在每次递归调用返回之前,您不会得到计算结果。假设你调用greet(“maggie”),计算机将首先为该函数调用分配一块内存。我们来使用这些内存。变量name被设置为maggie,这需要存储到内存中如果调用函数的话,计算机也为这个函数调用分配一 块内存。当函数调用完成,栈顶的内存块会被弹出调用另一个函数时,当前函数暂停 并处于未完成状态。该函数的所有变量的值都还在内存中。原创 2022-09-02 08:56:21 · 305 阅读 · 0 评论 -
509. 斐波那契数、爬楼梯所有路径、爬楼梯最小花费
斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给定 n ,请计算 F(n) 。输入:n = 2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1输入:4输出:3解释:F(4) = F(3) + F(2) = 2 + 1 = 3给你个4,4是需要3和2,3需要2和1,2需要原创 2022-07-03 15:04:19 · 180 阅读 · 0 评论 -
基本算法模板整理——链表,二叉树,快速排序
int val;} };int val;} };左右两个指针进行靠近右指针负责找比基准小的元素,遇到停下,把这个值给左指针,然后让左指针移动左指针负责找比基准大的元素,遇到停下,把这个值给右指针,然后下一次大while循环当左右指针不能再靠近时,将此时的key赋给左右指针指向的元素此时形成了左右指针的左边都比key小,右边都比key大首先将基准值和最后元素做交换,然后下面是从前面到后面将所有小值放到前面的过程。原创 2022-09-02 08:54:24 · 103 阅读 · 0 评论 -
二叉树初始化代码
二叉树初始化代码原创 2022-06-12 15:21:49 · 929 阅读 · 0 评论 -
leetcode汇总
一、题目汇总1、快速幂算法暴力 分治二、涉及的c++语法1、long long 类型long long类型原创 2022-05-31 14:01:25 · 870 阅读 · 0 评论 -
第50题快速幂
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,x^n )。1、暴力算法x个n相乘即可需要注意1、如果n是负数,那么就是正数个n的1/x相乘2、越界处理 double myPow(double x, int n) { //处理n为负数的情况 long long N = n;//把n变为长整型是处理越界的常用手段 if (N < 0) { x = 1 / x;原创 2022-05-31 13:56:48 · 127 阅读 · 0 评论 -
Leetcode回溯法
回溯法是复杂度很高的暴力搜索算法,实现简单且有固定模板,常被用于搜索排列组合问题的所有可行解。不同于普通的暴力搜索,回溯法会在每一步判断状态是否合法,而不是等到状态全部生成后再进行确认。当某一步状态非法时,它将回退到上一步中正确的位置,然后继续搜索。前进和后退是回溯法关键的动作。回溯的本质就是暴力枚举所有可能。要注意的是,由于回溯通常结果集都记录在回溯树的路径上,因此如果不进行撤销操作, 则可能在回溯后状态不正确导致结果有差异, 因此需要在递归到底部往上冒泡的时候进行撤销状态。如果你每次递归的过原创 2022-04-03 20:29:19 · 746 阅读 · 0 评论 -
算法总结
1、hashmap哈希表通过把当前元素的关键字 通过某个函数映射到数组中的某个位置,通过数组下标一次定位就可完成操作。因此如果想要知道是否存在这个值,那么就用哈希表,O(1)对于go语言可以用_,ok模式进行判断go语言,ok和_,ok模式_baidu_41553551的博客-CSDN博客2、...原创 2022-02-25 18:21:13 · 150 阅读 · 0 评论