学习总结

文章目录

  • 学习总结
  • 一、时间安排
  • 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++题解 isalnumtolower
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刷题】二月汇总篇相关推荐

  1. 小何同学的leetcode刷题笔记 基础篇(01)整数反转

    小何同学的leetcode刷题笔记 基础篇(01)整数反转[07] *** [01]数学取余法*** 对数字进行数位操作时,常见的方法便是用取余的方法提取出各位数字,再进行操作 操作(1):对10取余 ...

  2. LeetCode刷题笔记汇总

    LeetCode刷题笔记汇总 第一次刷LeetCode写的一些笔记. 1.两数之和 3.无重复字符的最长子串 15.三数之和 18.四数之和 19.删除链表的倒数第 N 个结点 20.有效的括号 21 ...

  3. LeetCode刷题专栏第一篇--思维导图时间安排

    昨天是元宵节,过完元宵节相当于这个年正式过完了.不知道大家有没有投入继续投入紧张的学习工作中.年前我想开一个Leetcode刷题专栏,于是发了一个投票想了解大家的需求征集意见.投票于2019年2月1日 ...

  4. 每天Leetcode 刷题 初级算法篇-打乱数组

    目录 Leetcode刷题 Leetcode刷题 /*** @program: mydemo* @description: 设计问题-打乱数组* @author: Mr.zeng* @create: ...

  5. Leetcode刷题系列汇总

    文章目录 一.前言 二.分治 && 归并 三.BFS 四.DFS & 回溯 五.动态规划 六.贪心算法 七.二叉树 7.1 中序遍历 SQL 一.前言 ~~~~~~       ...

  6. 每天Leetcode 刷题 初级算法篇-缺失数字

    题目要求: 缺失数字 力扣题解: 代码 import java.util.Arrays;/*** @program: mydemo* @description: 缺失数字* @author: Mr.z ...

  7. 每天Leetcode 刷题 初级算法篇-有效的括号

    题目要求: 力扣题解: 代码 import java.util.Deque; import java.util.HashMap; import java.util.LinkedList; import ...

  8. 每天Leetcode 刷题 初级算法篇-杨辉三角

    题目要求: 力扣题解: 代码 import java.util.ArrayList; import java.util.List;/*** @program: mydemo* @description ...

  9. 每天Leetcode 刷题 初级算法篇-颠倒二进制位

    题目要求: 力扣题解: 代码 /*** @program: test* @description:* @author: Long Ao Tian* @create: 2021-02-27 15:15* ...

  10. 每天Leetcode 刷题 初级算法篇-汉明距离

    题目要求: 力扣题解:循环和位移动 代码 /*** @program: mydemo* @description: 汉明距离* @author: Mr.zeng* @create: 2021-02-2 ...

最新文章

  1. Jetson TX2 学习资料整理
  2. g++编译后运行时无法链接动态库的解决方法
  3. php filter 文件包含,php://filter(文件包含漏洞利用)及php://input
  4. Linux服务器IP下了,linux – DDOS攻击下的服务器 – 如何查找IP?
  5. SAP UI5 main page design
  6. Windows下访问VirtualBox的mysql服务
  7. 两对光纤收发器用网线连接_为什么现在的人不喜欢用网线,反而更爱用光纤来传输呢?涨知识了...
  8. fastjson导致的OOM
  9. springCloud - 第13篇 - 服务监控 集群模式 Hystrix-turbine
  10. 牛客网SQL篇刷题篇(38-47)
  11. ASP.NET页面生命周期概述
  12. python是什么软件-python一般用什么软件
  13. 2Sigma OA prepare: Friends Circle
  14. BZOJ 1029 [JSOI2007]建筑抢修 已更新
  15. 【正点原子STM32连载】第二章 STM32简介 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
  16. 锅炉给水泵flash_锅炉给水泵故障实例
  17. 网络编程学习路线计划
  18. SSS1700 QFN36单芯片设计一款USB Typec耳机|支持线控和欧美规自动切换USB耳机方案
  19. java毫秒值转换成日期_Java学习笔记day08
  20. 通信原理 数字基带信号之码间串扰

热门文章

  1. 贝叶斯网专题4:概率推理中的变量消元方法
  2. JS方法/函数重载的姿势
  3. matlab 功率谱密度 汉宁窗_【转】功率谱密度相关方法的MATLAB实现
  4. 丢手帕问题 java_丢手帕问题java 实现
  5. MySQL、MongoDB、Redis 数据库之间的区别
  6. 各个数据库的空间函数
  7. python反爬虫原理与绕过实战pdf-antispider
  8. 在Linux中安装JKD(详细教学)
  9. 最简单的MySQL安装教程(数据库免安装版,免安装版,亲测好用) mysql-5.7.33-winx64.zip
  10. 鸡啄米之VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)