【LeetCode刷题】二月汇总篇
学习总结
文章目录
- 学习总结
- 一、时间安排
- task01 数组
- task02 链表
- task03 栈
- task04 字符串
- task05 树
- task06 位运算
- task07 双指针
- task08 搜索
- task09 排序
- task10 动态规划
- task11 分治
- task12 哈希表
一、时间安排
阿里云天池leetcode训练营(二月)。
task01 数组
2月14日-2月15日
leetcode题号 | 题目 | 题解链接 | 注意事项 |
---|---|---|---|
16 | 最接近的三数之和 | C++题解 | 双指针 |
task02 链表
2月16日-2月17日
leetcode题号 | 题目 | 题解链接 | 注意事项 |
---|---|---|---|
61 | 旋转链表 | 已完成 |
第n-k-1 为新头节点
|
剑指 Offer 25. | 合并两个排序的链表 | 已完成 | 常规题,哨兵节点 |
160 | 相交链表 | C++题解 | 简单数学 |
82 | 删除排序链表中的重复元素 II | C++题解 | 每段可以循环删除 |
task03 栈
2月18日-2月19日
leetcode题号 | 题目 | 题解链接 | 注意事项 |
---|---|---|---|
20 | 有效的括号 | C++题解 | 栈 |
150 | 逆波兰表达式求值 | C++题解 | 栈 |
155 | 最小栈 | C++题解 | 借助辅助栈 |
844 | 比较含退格的字符串 | C++题解 | 双栈或者双指针,后者方法才能 O ( 1 ) O(1) O(1)空间复杂度 |
227 | 基本计算器 II | C++题解 | 这几题中最综合的一题,值得二刷,从加减法、乘除法、加入括号(递归)逐层思考。 |
task04 字符串
2月20日-2月21日
可以熟悉C++和字符串相关的api,如isalnum
判断是否为字母或者数字,如果不知道api就写判断条件;tolower
是将char字符转为小写字母。
leetcode题号 | 题目 | 题解链接 | 注意事项 |
---|---|---|---|
125 | 验证回文串 | C++题解 |
isalnum 和tolower
|
151 | 翻转字符串里的单词 | C++题解 | 和剑指offer58 I.翻转单词顺序相同(istringstream) |
680 | 验证回文字符串 II | C++题解 |
s.substr(a, b) 表示从s 字符串的a 下标开始算,连续b 个字符
|
168 | Excel表列名称 | C++题解 | 从1开始的进制转换 |
394 | 字符串解码 | Python题解 | 栈 |
task05 树
2月22日-2月23日
常用递归,方法和思路可以参考宏观角度看递归。
leetcode题号 | 题目 | 题解链接 | 注意事项 |
---|---|---|---|
104 | 二叉树的最大深度 | C++题解 | 递归or迭代 |
108 | 将有序数组转换为二叉搜索树 | C++题解 | 中序遍历,为了严格平衡BST,可以选中间节点为根结点 |
111 | 二叉树的最小深度 | C++题解 | 递归or层次遍历的迭代 |
112 | 路径总和 | C++题解 | 边界条件: root为NULL要return,root左右子树为NULL时要判断是否为sum |
173 | 二叉搜索树迭代器 | C++题解 | 中序遍历,注意引用的用法 |
task06 位运算
2月24日-2月25日
(1)n&(n-1)可以将n的二进制位的最低位1移除;
(2)n&(-n)==n则说明n是2的幂,负数在计算机中是按补码存储的,-n是n的每位取反再加1。
leetcode题号 | 题目 | 题解链接 | 注意事项 |
---|---|---|---|
136 | 只出现一次的数字 | C++题解 | 异或的位运算 |
260 | 只出现一次的数字III | C++题解 | 分组是关键,异或,与操作 |
231 | 2的幂 | C++题解 | (n & (n - 1) == 0或n & (-n) == n) |
137 | 只出现一次的数字II | C++题解 | 每个数的第j列元素相加余3 |
78 | 子集 | C++题解 | 2种回溯方法 |
task07 双指针
2月26日-2月27日
leetcode题号 | 题目 | 题解链接 | 注意事项 |
---|---|---|---|
206 | 反转链表 | C++题解 | 递归or迭代法 |
19 | 删除链表的倒数第N个结点 | C++题解 | 有哨兵节点 |
704 | 二分查找 | 已完成 | 常规题 |
33 | 搜索旋转排序数组 | C++题解 | 二分查找的变种 |
task08 搜索
2月28日-3月1日
leetcode题号 | 题目 | 题解链接 | 注意事项 |
---|---|---|---|
704 | 二分查找 | 已完成 | 常规题 |
33 | 搜索旋转排序数组 | C++题解 | 二分查找的变种 |
101 | 对称二叉树 | C++题解 | 递归or迭代 |
94 | 二叉树的中序遍历 | 已完成 |
模板题,inorder 单独写出来
|
230 | 二叉搜索树中第K小的元素 | 已完成 |
就中序遍历数组,取第k-1 个
|
task09 排序
3月2日-3月3日
快速排序的模板:
class Solution {public:vector<int> sortArray(vector<int>& nums) {int n = nums.size();quick_sort(nums,0,n-1);return nums;}void quick_sort(vector<int> &q ,int l,int r){//递归边界if(l>=r) return;//这里初值设置为l-1,r+1是因为while中是do,while结构//先使i+1,j-1指向数组的第一和最后一个位置,再开始判断int x = q[(l+r) >> 1],i = l-1, j=r+1;while(i<j){//将比枢轴小的元素do{i++;} while(q[i] < x);do{j--;} while(q[j] > x);if(i < j) swap(q[i], q[j]);}//递归左右子序列quick_sort(q,l,j);quick_sort(q,j+1,r);}
};
leetcode题号 | 题目 | 题解链接 | 注意事项 |
---|---|---|---|
88 | 合并两个有序数组 | 已完成 |
直接把nums2 补在nums1 尾巴后sort
|
912 | 排序数组 | C++题解 | 如果用快速排序,选枢轴需要随机or取中间的!!不然会超时 |
977 | 有序数组的平方 | 已完成 | 直接平方后排序了(偷懒) |
1122 | 数组的相对排序 | C++题解 | 哈希表 or 自定义排序sort函数 |
147 | 对链表进行插入排序 | C++题解 | 可以先对节点进行sort排序后再将节点连接起来,排序函数如下 |
sort(vec.begin(), vec.end(), [&](ListNode* n1, ListNode* n2){return n1->val < n2->val;
});
task10 动态规划
3月4日-3月5日
四部曲:确定状态;状态转移方程(描述子问题之间的联系);边界+初始条件;遍历顺序。
leetcode题号 | 题目 | 题解链接 | 注意事项 |
---|---|---|---|
53 | 最大子数组和 | C++题解 | 注意是连续,用dp后,还可以使用分治法 |
1143 | 最长公共子序列 | C++题解 | 这里的子序列可以不连续 |
121 | 买卖股票的最佳时机 | C++题解 | 二维数组 |
122 | 买卖股票的最佳时机 II | C++题解 | 比I多了个多次买卖 |
516 | 最长回文子序列 | C++题解 |
使用中心扩散法(更好想),有奇数和偶数两种情况,palindrome 单独写
|
task11 分治
3月6日-3月7日
分治思想:将原问题划分为n个规模较小,并且结构与原问题相似的子问题,递归地解决这些子问题,然后合并结果,得到原问题的解。
每一次递归都会设计3个操作:
- 分解:将原问题分解成一系列子问题;
- 解决:递归地求解各个子问题,若子问题足够小,则直接求解;
- 合并:将子问题的结果合并成原问题;
leetcode题号 | 题目 | 题解链接 | 注意事项 |
---|---|---|---|
108 | 将有序数组转换为二叉搜索树 | C++题解 | 中序遍历构建BST,每次取中间节点作为当前根结点即可保证高度平衡 |
106 | 从中序与后序遍历序列构造二叉树 | C++题解 | 边界小心 |
168 | 多数元素 | C++题解 | 摩尔投票法 |
53 | 最大子数组和 | C++题解 | 动态规划,要补分治法 |
105 | 从前序与中序遍历序列构造二叉树 | C++题解 | 和106类似 |
task12 哈希表
3月8日-3月9日
leetcode题号 | 题目 | 题解链接 | 注意事项 |
---|---|---|---|
217 | 存在重复元素 | 已完成 | — |
36 | 有效的数独 | C++题解 | 三个哈希表 |
219 | 存在重复元素 II | C++题解 |
哈希,mp[i]=j 表示数字i在原数组的下标为j
|
771 | 宝石与石头 | 已完成 | 基础题,哈希 |
811 | 子域名访问计数 | 待完成 | 涉及很多字符串处理(如分割和拼接) |
【LeetCode刷题】二月汇总篇相关推荐
- 小何同学的leetcode刷题笔记 基础篇(01)整数反转
小何同学的leetcode刷题笔记 基础篇(01)整数反转[07] *** [01]数学取余法*** 对数字进行数位操作时,常见的方法便是用取余的方法提取出各位数字,再进行操作 操作(1):对10取余 ...
- LeetCode刷题笔记汇总
LeetCode刷题笔记汇总 第一次刷LeetCode写的一些笔记. 1.两数之和 3.无重复字符的最长子串 15.三数之和 18.四数之和 19.删除链表的倒数第 N 个结点 20.有效的括号 21 ...
- LeetCode刷题专栏第一篇--思维导图时间安排
昨天是元宵节,过完元宵节相当于这个年正式过完了.不知道大家有没有投入继续投入紧张的学习工作中.年前我想开一个Leetcode刷题专栏,于是发了一个投票想了解大家的需求征集意见.投票于2019年2月1日 ...
- 每天Leetcode 刷题 初级算法篇-打乱数组
目录 Leetcode刷题 Leetcode刷题 /*** @program: mydemo* @description: 设计问题-打乱数组* @author: Mr.zeng* @create: ...
- Leetcode刷题系列汇总
文章目录 一.前言 二.分治 && 归并 三.BFS 四.DFS & 回溯 五.动态规划 六.贪心算法 七.二叉树 7.1 中序遍历 SQL 一.前言 ~~~~~~ ...
- 每天Leetcode 刷题 初级算法篇-缺失数字
题目要求: 缺失数字 力扣题解: 代码 import java.util.Arrays;/*** @program: mydemo* @description: 缺失数字* @author: Mr.z ...
- 每天Leetcode 刷题 初级算法篇-有效的括号
题目要求: 力扣题解: 代码 import java.util.Deque; import java.util.HashMap; import java.util.LinkedList; import ...
- 每天Leetcode 刷题 初级算法篇-杨辉三角
题目要求: 力扣题解: 代码 import java.util.ArrayList; import java.util.List;/*** @program: mydemo* @description ...
- 每天Leetcode 刷题 初级算法篇-颠倒二进制位
题目要求: 力扣题解: 代码 /*** @program: test* @description:* @author: Long Ao Tian* @create: 2021-02-27 15:15* ...
- 每天Leetcode 刷题 初级算法篇-汉明距离
题目要求: 力扣题解:循环和位移动 代码 /*** @program: mydemo* @description: 汉明距离* @author: Mr.zeng* @create: 2021-02-2 ...
最新文章
- Jetson TX2 学习资料整理
- g++编译后运行时无法链接动态库的解决方法
- php filter 文件包含,php://filter(文件包含漏洞利用)及php://input
- Linux服务器IP下了,linux – DDOS攻击下的服务器 – 如何查找IP?
- SAP UI5 main page design
- Windows下访问VirtualBox的mysql服务
- 两对光纤收发器用网线连接_为什么现在的人不喜欢用网线,反而更爱用光纤来传输呢?涨知识了...
- fastjson导致的OOM
- springCloud - 第13篇 - 服务监控 集群模式 Hystrix-turbine
- 牛客网SQL篇刷题篇(38-47)
- ASP.NET页面生命周期概述
- python是什么软件-python一般用什么软件
- 2Sigma OA prepare: Friends Circle
- BZOJ 1029 [JSOI2007]建筑抢修 已更新
- 【正点原子STM32连载】第二章 STM32简介 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- 锅炉给水泵flash_锅炉给水泵故障实例
- 网络编程学习路线计划
- SSS1700 QFN36单芯片设计一款USB Typec耳机|支持线控和欧美规自动切换USB耳机方案
- java毫秒值转换成日期_Java学习笔记day08
- 通信原理 数字基带信号之码间串扰
热门文章
- 贝叶斯网专题4:概率推理中的变量消元方法
- JS方法/函数重载的姿势
- matlab 功率谱密度 汉宁窗_【转】功率谱密度相关方法的MATLAB实现
- 丢手帕问题 java_丢手帕问题java 实现
- MySQL、MongoDB、Redis 数据库之间的区别
- 各个数据库的空间函数
- python反爬虫原理与绕过实战pdf-antispider
- 在Linux中安装JKD(详细教学)
- 最简单的MySQL安装教程(数据库免安装版,免安装版,亲测好用) mysql-5.7.33-winx64.zip
- 鸡啄米之VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)