
LeetCode&&笔试题
题解
李烦烦搞快点
这个人不懒,但是依旧什么都没留下
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
我也有背模板的一天?
1.快排#include <iostream>using namespace std;const int N = 100010;int a[N];int n;void qs(int q[], int l, int r){ if(l >= r) return; int x = q[l + r >> 1], i = l - 1, j = r + 1; while(i < j) { do i ++; whi原创 2021-08-17 11:00:25 · 201 阅读 · 0 评论 -
每日一题-LeetCode919-完全二叉树插入器-数据结构-手写堆
堆就是放到一维数组里面,节点是p的话,那么左节点就是2p,右节点就是2p+1,这样就可以很快的找到父节点。原创 2022-07-25 15:35:06 · 308 阅读 · 1 评论 -
每日一题-LeetCode814-二叉树剪枝-递归
包含好办,不包含的时候根据当前节点和左右子树是否为空来进行判断。dfs函数返回当前子树是否包含1,如果包含1返回。原创 2022-07-21 15:46:32 · 522 阅读 · 0 评论 -
每日一题-LeetCode1260-二维网格迁移-数组-映射
即可达到效果,翻转的时候不用先真的展开成一维数组,建立映射关系进行。展成一维数组,题里就是把最后的K位置移动到开头的位置。原创 2022-07-20 09:45:36 · 464 阅读 · 0 评论 -
每日一题-LeetCode735-行星碰撞-模拟
原题链接同方向的指定不会撞只有往右走的和往左走的可能会撞上,所以只考虑这个就可了如果是往右走的,直接放到答案里面去如果是往左走的,先把比他小的全从答案里T出去如果相等,那就直接循环下一个如果前面剩下的都是向左走的了,那么就直接进入答案里面...原创 2022-07-13 19:26:29 · 244 阅读 · 0 评论 -
LeetCode2326-螺旋矩阵IV-数组-模拟
螺旋矩阵、蛇形填数原创 2022-07-12 16:50:18 · 135 阅读 · 0 评论 -
LeetCode2325-解密消息-字符串-模拟
原题链接原创 2022-07-12 16:20:50 · 189 阅读 · 0 评论 -
每日一题-LeetCode1252-奇数值单元格的数目-矩阵-模拟
原题链接原创 2022-07-12 15:53:16 · 191 阅读 · 0 评论 -
LeetCode2337-移动片段-脑筋急转弯-双指针
原题链接宽搜模拟一下就爆时间了,还是得搞花里胡哨的首先,去掉下划线之后,两个字符串得是一样的我不会调用库函数,就分两步走,先判断L和R的数量是不是一样的之后在后面去判断有没有连续的相互错位然后两个指针都从头开始遍历两个字符串如果start找到了L,并且那么说明这个L的正确位置在右边,他已经挪不过去了,如果start找到了R,并且那么说明这个R的正确位置在左边,他也挪不过去了,代码里比较高级的地方是,不用两个判断了,因为他俩是正好相反的条件,直接用==判断是不是同时成立...原创 2022-07-11 21:38:05 · 198 阅读 · 0 评论 -
LeetCode166-分数到小数-字符串-高精度除法
高精度除法原创 2022-07-11 17:21:51 · 246 阅读 · 0 评论 -
LeetCode139-单词拆分-字符串-动态规划
原题链接就是看看怎么个拆分法能给拆成让单词都出现在字典里面状态表示:表示是否可以被拆分状态转移方程:为了能保证查询子串是否出现在字典里面,使用字符串hash操作来实现O(1)的复杂度这样就要尽量去保证从前往后的去计算字符串哈希所以在递推每种状态的时候,就倒着推初始化这是说当你前面找到第一个符合标准的划分方法之后就可以划分了,最后是空的字符,不会有影响的...原创 2022-07-11 16:20:16 · 154 阅读 · 0 评论 -
每日一题-LeetCode676-实现一个魔法字典
原题链接首先,构建一个trie树存放字典里的所有单词,然后每次查询操作都爆搜一下构建好的trie树,搜的过程中开个变量去记录有多少字符不一样搜的时候就是从0号节点开始搜他的26个子节点,如果字母跟字符串当前要搜的字符一样,那就继续走下去,如果不一样,记录一下不一样个数然后继续往下走,如果没有这个子节点就...原创 2022-07-11 11:31:31 · 195 阅读 · 0 评论 -
LeetCode131-分割回文串-字符串-爆搜-动态规划
字符串、动态规划原创 2022-07-10 11:27:14 · 219 阅读 · 0 评论 -
LeetCode91-解码方法-字符串-动态规划
动态规划原创 2022-07-10 10:29:12 · 240 阅读 · 0 评论 -
每日一题-LeetCode873-最长的斐波那契子序列的长度-动态规划
每日一题-动态规划原创 2022-07-09 16:50:27 · 194 阅读 · 0 评论 -
LeetCode374-前K个高频元素-排序
数组+技术排序原创 2022-07-08 12:14:16 · 128 阅读 · 0 评论 -
每日一题-LeetCode1217-玩筹码-数组-贪心
每日一题原创 2022-07-08 09:39:27 · 301 阅读 · 0 评论 -
每日一题-LeetCode648-单词替换-字符串-哈希
原题链接把所有的前缀放到一个set里面,遍历每个单词,单词在遍历每个字母,如果出现过就替换,没出现过拉倒原创 2022-07-07 10:15:06 · 163 阅读 · 0 评论 -
LeetCode328-奇偶链表-数据结构
原题链接开两个头结点,一个记录奇数位置的元素,一个记录偶数位置的元素放完之后给他再重新合并成答案即可就开了俩头结点,O(1)空间,只便利一次链表,O(n)时间原创 2022-07-04 11:46:09 · 183 阅读 · 0 评论 -
图论相关的算法代码模板
1、Dijkstra求最短路 朴素版稠密图,邻接矩阵存储,找单源最短路,首先起点设置为dist = 0,其他点均为正无穷每次从已经可到达并且还没有确定最短路的里面选一个最短的,从这个点拓展出去看看能不能更新其他点为更短的路径,这个点也就确定了到达的最短路遍历n - 1次之后,就是从所有的点遍历过一次,所有的点也就被确定好了最短的距离代码如下:#include <cstring>#include <iostream>#include <algorithm>原创 2022-07-03 18:57:46 · 391 阅读 · 0 评论 -
LeetCode316-去除重复字母-栈-贪心-字符串
原题链接维护一个答案字符串,遍历给的字符串,每次判断一下当前这个字符,是不是比答案字符串的末尾小,如果小的话,那就看看这个末尾的能不能删,能删就删掉,不能删那没办法,就继续放着...原创 2022-06-30 19:05:04 · 130 阅读 · 0 评论 -
LeetCode1497-检查数组对是否可以被 k 整除-数组-哈希表-计数
原题链接1、数组中所有的数,都对k进行一个取余运算,这样之后就可以把题目变成是否有两个数的和等于k2、刚才取余的同时就开个数组记录下来,每个数取完之后对应的是几3、遍历一半的数组,判断每个mod[i] == mod[k - i]即可4、最后,因为有可能俩人取完余数是0的情况,判断一下0号位置是不是2的倍数...原创 2022-06-30 17:21:42 · 141 阅读 · 0 评论 -
每日一题-LeetCode1175-质数排列-数学
原题链接质数可以在质数的位置上瞎排,非质数可以在非质数的位置上瞎排,每个都是阶乘的排法求出来1 ~ n所有的质数,分别算个阶乘,结果乘到一起就是答案求质数就直接遍历就行了,开个表记录下来当前是不是质数,以及到当前位置质数有多少个...原创 2022-06-30 16:08:29 · 172 阅读 · 0 评论 -
LeetCode522-最长特殊序列II-哈希表-字符串-双指针
原题链接遍历列表,每次去判断当前的字符串是否不是其他字符串的子串,如果是,那就记录一下最长的答案,如果不是,那么就看其他的原创 2022-06-30 15:43:31 · 143 阅读 · 0 评论 -
LeetCode-1528-重新排列字符串-哈希表-字符串
原题链接开个哈希表记录下每个数字对应的字母,然后从0开始把字符串复原出来即可,O(N)复杂度原创 2022-06-24 17:33:23 · 213 阅读 · 0 评论 -
每日一题-LeetCode515-在每个树行中找最大值-宽搜-数据结构
原题链接和之前的输出每一层二叉树差不多,开一个变量记录当前层的末尾位置,遍历每一层的时候一直记录一个最大值,到结尾的时候就把这一层的最大值放到答案数组里就可了原创 2022-06-24 17:14:53 · 161 阅读 · 0 评论 -
LeetCode513-找树左下角的值-深搜-数据结构
原题链接原创 2022-06-24 16:22:37 · 184 阅读 · 0 评论 -
LeetCode508-出现次数最多的子树元素和-深搜
原题链接开一个哈希表(key是总和,value是出现的次数)在开一个变量记录当前出现次数做多的总和深搜完之后遍历哈希表,把所有出现次数等于最大值的总和全部放到答案数组里面 返回原创 2022-06-20 15:23:04 · 110 阅读 · 0 评论 -
每日一题-LeetCode1089-复写零-双指针
原题链接从后往前写,首先开个计数的,遍历数组,遇到0了,计数的指针就走两个,一直走到最后算结束然后从最后开始往前写,每次如果位置不是0就直接写回去,如果是0就放两个0,一直写到回到最开头,然后break掉...原创 2022-06-17 10:45:28 · 275 阅读 · 0 评论 -
每日一题-LeetCode532-数组中的k-diff数对
每日一题原创 2022-06-16 12:15:16 · 170 阅读 · 0 评论 -
每日一题-LeetCode1051-高度检查器-排序-模拟
原题链接原创 2022-06-13 17:44:24 · 150 阅读 · 0 评论 -
LeetCode326-3的幂-数学
原题链接不用递归循环找到个三的倍数最大的那个,去 mod 输入 看看结果是不是0原创 2022-06-09 12:20:43 · 111 阅读 · 0 评论 -
每日一题—LeetCode497—非重叠矩形中的随机点-前缀和-二分
原题链接面积越大,抽中的概率越高,从矩形中抽样好抽,横纵坐标独立的,都随机生成一下就行但是要先确定是哪一个矩形展成一维的情况,用一个前缀和数组来记录面积和每次随机生成一个数,他会落到这个一维的数组中,用二分去查找落得对应位置是哪一个矩形前缀和数组是下标从1开始的,那么二分的范围就是1 ~ n二分出来的结果减一 才能对应到给的输入的矩阵数组里...原创 2022-06-09 11:40:02 · 140 阅读 · 0 评论 -
每日一题-LeetCode1037-有效的回旋镖
原题链接叉乘结果为0,说明共线,否则说明不共线三个向量的叉乘太麻烦了,换成两个计算原创 2022-06-08 17:49:14 · 145 阅读 · 0 评论 -
每日一题-LeetCode875-爱吃香蕉的珂珂-数组-二分查找
原题链接答案的范围,一定是在和 之间的,那么二分去找答案,二分的判断条件就是以当前这个速度,h小时之内能不能吃完香蕉原创 2022-06-07 11:42:43 · 197 阅读 · 0 评论 -
LeetCode318-最大单词长度乘积-位运算-数组-字符串
原题链接先处理一遍数组,把所有的字符串变成位运算表示,这样两个进行一下与运算,如果等于0就说明没有重复的字符之后在枚举处理后的字符串,计算一下最大的长度即可原创 2022-06-06 16:22:24 · 187 阅读 · 0 评论 -
LeetCode-306-累加数-枚举-模拟
原题链接Note:给一个字符串,判断一下这个字符串是不是斐波那契,但是没有给分出来数字要挨个去枚举第一个数和第二个数两个循环分别去枚举第一个数的结尾和第二个数的结尾然后还要用到第一个数开头的前一个位置和第二个数开头的前一个位置这里分别就是-1和第一个数的结尾这样计算第一个数的长度的时候,数的结尾 - 数开头的前一个后面需要算子串的时候找个例子画一下就知道了整体流程大概就是,两重for循环去枚举两个数的结尾判断一下有没有前导0,如果有说明当前不成立大整数加法,用字符串表示,求一下和,看原创 2022-05-30 21:06:11 · 131 阅读 · 0 评论 -
LeetCode304-二维区域和检索 - 矩阵不可变-二维前缀和-算法模板
原题链接二维前缀和,置顶的模板里有class NumMatrix {public: vector<vector<int>> g; NumMatrix(vector<vector<int>>& matrix) { int n = matrix.size(), m = matrix[0].size(); g = vector<vector<int>>(n + 1, vecto原创 2022-05-30 20:21:37 · 141 阅读 · 0 评论 -
LeetCode303-区域和检索 - 数组不可变-前缀和
原题链接前缀和:class NumArray {public: vector<int> n; NumArray(vector<int>& nums) { n = vector<int>(nums.size() + 1, 0); for(int i = 1; i <= nums.size(); i ++) n[i] = nums[i - 1] + n[i - 1]; }原创 2022-05-30 19:40:46 · 142 阅读 · 0 评论 -
每日一题-LeetCode1022- 从根到叶的二进制数之和-递归-深搜-数据结构
原题链接Note:每次进来如果为空就返回0如果不为空,计算算上当前节点的值然后判断当前节点是否为叶子结点,如果是叶子节点就加到答案里如果不是叶子结点,就返回左子树的和+右子树的和代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0),原创 2022-05-30 19:25:27 · 116 阅读 · 0 评论