LeetCode专栏总结
文章平均质量分 87
一道题目刷一天
zdb呀
一直往南方开,不会太久
展开
-
【代码随想录】双指针法
双指针法双指针是一种做题思路,并不隶属于某一种特定的数据结构,数组、链表、字符串都可以出双指针的题目27. 移除元素【简单,快慢指针,首尾指针】快慢指针首尾指针class Solution {public: //快慢指针, 时间复杂度:O(n) 空间复杂度:O(1) int removeElement(vector<int>& nums, int val) { int slow = 0; for (int fast = 0; fast &l原创 2022-01-04 16:42:57 · 741 阅读 · 0 评论 -
【代码随想录】第10章 贪心算法
第10章 贪心算法贪心没有固定的模板套路如果找出局部最优并可以推出全局最优,就是贪心;如果局部最优都没有找出来,就不是贪心,可能是单纯的模拟。贪心算法一般分为如下四步:将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解刷题或者面试的时候,手动模拟一下感觉可以局部最优推出整体最优,而且想不到反例,那么就试一试贪心。455. 分发饼干【简单】思路:小饼干给小胃口同样可以反过来,大饼干给大胃口class Solution {public原创 2022-02-21 15:54:40 · 1565 阅读 · 0 评论 -
【代码随想录】第9章 回溯算法
第9章 回溯算法 回溯模板:void backtracking(参数){ if(终止条件){ 存放结果; return; } for(选择:本层集合中元素){ 处理结点; backtracking(路径,选择列表); //递归 回溯,撤销处理结果 }}1. 组合问题77. 组合【中等】回溯:class Solution {private: vector<vecto原创 2022-02-14 16:49:18 · 7136 阅读 · 0 评论 -
【代码随想录】第8章 二叉树
第8章 二叉树1. 二叉树理论基础二叉树种类(1)满二叉树 (2)完全二叉树 (3)二叉搜索树或称二叉查找树中序遍历是递增序列(4)平衡二叉搜索树二叉树的存储方式可以链式存储,也可以顺序存储链式存储用指针,顺序存储用数组顺序存储的元素在内存是连续分布的,链式存储则是通过指针把分布在散落在各个地址的结点串联在一起用数组来存储二叉树如何遍历的呢?如果父节点的数组下标是 i,那么它的左孩子就是 i * 2 + 1,右孩子就是 i * 2 + 2。二叉树的遍历深度优先遍历原创 2022-02-11 23:54:44 · 649 阅读 · 0 评论 -
【代码随想录】第7章:栈与队列
第7章 栈与队列queue有push(),pop()头删,back(),front(),empty(),size()stack有push(),pop()尾删,top(),empty(),size()两个特殊应用:单调队列,优先级队列232. 用栈实现队列【简单】思路:用栈模拟队列,就是两个栈里面的数据倒来倒去class MyQueue {private: stack<int> in_stack, out_stack; //实现两个倒数的函数 void i原创 2021-12-25 15:43:33 · 3591 阅读 · 0 评论 -
【代码随想录】第5章:哈希表
哈希表1. 哈希表理论基础哈希表有一个现象:哈希冲突解决哈希冲突的方法:拉链法,线性探测法常见的三种哈希结构:数组setmap哈希查找:O(1)枚举查找:O(n)红黑树是一种平衡二叉搜索树,所以key值是有序的,但key不可以修改,改动key值会导致整棵树的错乱,所以只能删除和增加。2. 有效的字母异位词242. 有效的字母异位词【简单】思路一:sort()函数先对字符串进行排序,在判断两个字符串相等。时间复杂度高思路二:桶排序;对字符串1进行++计数;对字符串2进行原创 2021-12-20 17:56:47 · 244 阅读 · 0 评论 -
【代码随想录】第6章:字符串
字符串在C语言中,把一个字符串存入一个数组时,也把结束符 '\0’存入数组,并以此作为该字符串是否结束的标志。 string str = "abc"; for (int i = 0; str[i] != '\0'; i++) { cout << str[i] << endl; }反转字符串344. 反转字符串【简单】非常简单题目意思:实现库函数reverse的功能思路1:遍历数组,交换前后思路2:首尾指针实现交换class Solution {pu原创 2021-12-24 20:21:16 · 700 阅读 · 1 评论 -
【代码随想录】第4章:链表
【1】博客整理自代码随想录:https://programmercarl.com/%E9%93%BE%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html#%E5%8D%95%E9%93%BE%E8%A1%A8【2】本博客电子文档获取链接:https://pan.baidu.com/s/1nOqNMpH8eoZdI8Gvm6LflQ【3】提取码获取方式:关注WX公众号回复关键字提取码获取链表1. 链表简介链表的类型单链表:有指向下一个结点的指针双原创 2021-12-20 18:08:53 · 432 阅读 · 0 评论 -
【代码随想录】第3章:数组
【1】总结自代码随想录数组篇:https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html#_704-%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE【2】博客作为LeetCode刷题记录【3】该博客电子文档获取链接:https://pan.baidu.com/s/10uiyKvwh7B9bKAyIb_GH9A【4】百度网盘提取码获取方式:WX公众号回复关键字提取码数组1. 二分查找70原创 2021-12-20 18:08:09 · 608 阅读 · 0 评论 -
【代码随想录】第2章:程序的性能分析
第二章 程序的性能分析时间复杂度理论上是指算法的最坏情况,即上界但平时指的是一般情况例如:插入排序 一般情况:O(n^2) 最好情况:O(n) 最坏情况:O(n^2)快速排序 一般情况:O(n^2) 最好情况:O(nlogn) 最坏情况:O(n^2)按理来说,快排时间复杂度应该是O(n^2);但是业界习惯把快排的时间复杂度默认为O(nlogn)时间复杂度还与数据规模有关注意:logn是忽略底数的注意:面试不原创 2021-12-14 20:03:38 · 1095 阅读 · 0 评论 -
LeetCode最长序列
LeetCode最长序列类型题目集合原创 2022-06-07 16:40:25 · 223 阅读 · 0 评论 -
LeetCode股票系列
LeetCode股票系列全解原创 2022-06-01 21:03:08 · 732 阅读 · 0 评论 -
LeetCode打家劫舍系列
打家劫舍系列198. 打家劫舍【中等】思路:动态规划动态规划五部曲:确定dp数组以及下标含义dp[i]:考虑下标i以内的房屋,最多可以偷窃的金额为dp[i]确定递推公式决定dp[i]的因素就是第i间房间偷还是不偷偷:dp[i] = dp[i - 2] + nums[i];不偷:dp[i] = dp[i - 1];得出:dp[i] = max(dp[i-2] + nums[i], dp[i-1]);初始化dp[0] = nums[0];dp[1] = max(nums[原创 2022-05-26 22:29:16 · 295 阅读 · 0 评论 -
《LeetCode》位运算详解
位运算^ : 按位异或& : 按位与| : 按位或~ : 取反<< : 算术左移>> : 算术右移0s和1s分别表示只由0或1构成的二进制数字x ^ 0s == x;x ^ 1s == ~x;x ^ x == 0;x & 0s == 0;x & 1s == 1;x & x == x;x | 0s == x;x | 1s == 1s;x | x == x;//n & (n-1)可以去除n的位级表示中最低原创 2022-05-02 15:34:47 · 816 阅读 · 0 评论 -
【C++】二叉树的遍历:前序、中序、后序、层序
二叉树的遍历144. 二叉树的前序遍历94. 二叉树的中序遍历145. 二叉树的后序遍历二叉树的递归遍历递归三要素:确定递归函数的参数和返回值:void preorder(TreeNode *root, vector<int>& res)确定终止条件:if(cur == nullptr) return;确定单层递归的逻辑时间复杂度:O(n)空间复杂度:O(n)class Solution {public: void preorder(TreeNode原创 2022-01-04 20:06:17 · 653 阅读 · 0 评论 -
【C++】【LeetCode】KMP算法
KMP算法28. 实现 strStr()【简单,KMP】思路一:BF法,即朴素匹配,暴力破解时间复杂度:O(nm)空间复杂度:O(1)class Solution {public: int strStr(string haystack, string needle) { if (needle.size() > haystack.size()) return -1; //排除子串比主串长的情况 if (needle.size() == 0) return 0;原创 2021-12-24 20:23:15 · 1348 阅读 · 1 评论 -
《LeetCode》数据结构入门板块
《LeetCode题》数据结构入门板块第1天 数组217.存在重复元素【简单,哈希表】题目链接:https://leetcode-cn.com/problems/contains-duplicate/思路一:数组排序,再遍历。时间复杂度:O(NlogN),N为数组长度,排序的复杂度空间复杂度:O(logN)class Solution {public: bool containsDuplicate(vector<int>& nums) { sor原创 2021-11-14 18:45:49 · 659 阅读 · 0 评论