[C++]Leetcode超高效刷题顺序及题目详解笔记(持续更新中)

2023-05-16

一.前言

博主最近在LeetCode上用C++练习。一路走来踩过一些坑,做了一些总结和笔记,分享给需要的人。
LeetCode中文版:https://leetcode-cn.com/

二.介绍

LeetCode 是一个非常棒的平台,收集了许多公司的面试题目。相对其他平台而言,有着下面的几个优点:

  1. 题目全部来自业内大公司的真实面试不用处理输入输出
  2. 精力全放在解决具体问题上题目有丰富的讨论
  3. 可以参考别人的思路精确了解自己代码在所有提交代码中运行效率的排名
  4. 支持多种主流语言:C/C++,Python, Java可以在线进行测试,方便调试

人类解决问题的一般性的思维方法,总结起来主要有以下几种:

  1. 时刻不忘未知量。即时刻别忘记你到底想要求什么,问题是什么。(动态规划中问题状态的设定)
  2. 试错。对题目这里捅捅那里捣捣,用上所有的已知量,或使用所有你想到的操作手法,尝试着看看能不能得到有用的结论,能不能离答案近一步(回溯算法中走不通就回退)。
  3. 求解一个类似的题目。类似的题目也许有类似的结构,类似的性质,类似的解方案。通过考察或回忆一个类似的题目是如何解决的,也许就能够借用一些重要的点子,用特例启发思考。通过考虑一个合适的特例,可以方便我们快速寻找出一般问题的解。
  4. 反过来推导。对于许多题目而言,其要求的结论本身就隐藏了推论,不管这个推论是充分的还是必要的,都很可能对解题有帮助。

如果是大二大三、研一的同学,找工作还有很长一段时间,期间可以先打好编程的基础。先把C语言、数据结构学完之后再来刷题。如果是马上就要找工作的人,可以参考博主的笔记,里面记录的我的一些想法、代码流程和核心思路。

**大部分内容为个人想法见解,不妥之处请见谅,如有问题欢迎留言私信!!!**

刷题过程中,新手可以按照不同标签分类、同一类型从简单到难的顺序刷题,效率更高。以下按照算法思想数据结构分为两大类,每一类中有若干不同类型标签的题,按照从简单到难分类。

三.如何有效地写算法题

目的
持续做算法题的目的仍然是自身能力提升。可以继续细化成三点:

  1. 保持思维敏捷。非常重要,状态好才能保持对编程的热情。
  2. 对基础的数据结构、查找和排序保持熟练。能解决日常开发中的性能相关问题。
  3. 积累对问题域的探索。只有对问题域有足够的探索,才可能举一反三,迸发灵感。
    方法
    在刷题的过程中非常最容易产生挫败感,无法坚持。原因是,长时间的思考导致疲倦,多次积累的疲倦使得自己产生了 抵触记忆。以至于会下意识觉得做题就是 刻苦。如果每次做一件事最后留下的映像都是轻松愉快的,那么人就会越来越喜欢做此事,反之厌恶。所以为了能保持做题的兴趣,务必每次要主动给自己留下好的记忆。

目前 leetcode 上的题大致可分为几种类型:
对某种复杂规则的彻底解析,很有可能要构造状态机,充分考虑边界情况。 对某种数据结构及算法的应用。 对数学概念、遍历、动态规划等的综合应用。

四.leetcode题目

算法思想

双指针

1. 两数之和

2. 三数之和

3. 两数之和 II - 输入有序数组

4. 平方数之和

5. 反转字符串中的元音字母

6. 验证回文串

7. 验证回文字符串 Ⅱ

8. 合并两个有序数组

9. 环形链表

10. 通过删除字母匹配到字典里最长单词

排序

215. 数组中的第K个最大元素

347. 前 K 个高频元素

451. 根据字符出现频率排序

75. 颜色分类

贪心思想

455. 分发饼干

435. 无重叠区间

452. 用最少数量的箭引爆气球

406. 根据身高重建队列

121. 买卖股票的最佳时机

122. 买卖股票的最佳时机 II

二分查找

69. x 的平方根

744. 寻找比目标字母大的最小字母

540. 有序数组中的单一元素

278. 第一个错误的版本

153. 寻找旋转排序数组中的最小值

  1. 在排序数组中查找元素的第一个和最后一个位置

分治

50. Pow(x, n)

  1. 为运算表达式设计优先级

95. 不同的二叉搜索树 II

搜索

102. 二叉树的层序遍历

103. 二进制矩阵中的最短路径

279.完全平方数

127.单词接龙
DFS
695.岛屿的最大面积

200.岛屿数量

547.朋友圈

130.被围绕的区域

417.太平洋大西洋水流问题
Backtracking
17.电话号码的字母组合

93.复原IP地址

79.单词搜索
257.二叉树的所有路径
46.全排列
47.全排列 II
77.组合
39.组合总和
40.组合总和 I
216.组合总和 II
78.子集
90.子集 II
131.分割回文串
37.解数独
51.N皇后

动态规划

斐波那契数列
70.爬楼梯
198.打家劫舍
213.打家劫舍 II

矩阵路径

64.最小路径和
62.不同路径
数组区间
303.区域和检索 - 数组不可变
413.等差数列划分
分割整数
343.整数拆分
279.
91.解码方法
最长递增子序列
300.最长上升子序列
646.最长数对链
376.摆动序列
最长公共子序列
1143.最长公共子序列

0-1 背包

416.分割等和子集
494.目标和
474.一和零
322.零钱兑换
518. 零钱兑换 II
519. 单词拆分
377.组合总和 Ⅳ

股票交易

  1. 最佳买卖股票时机含冷冻期
    714 . 买卖股票的最佳时机含手续费
  2. 买卖股票的最佳时机 III
  3. 买卖股票的最佳时机 IV
    字符串编辑
  4. 两个字符串的删除操作
  5. 编辑距离
    650 .只有两个键的键盘

数学

204.计数质数
504. 七进制数
405. 数字转换为十六进制数
168. Excel表列名称
172. 阶乘后的零
67. 二进制求和
462. 最少移动次数使数组元素相等 II
169多数元素

数据结构

链表

206.反转链表

160.相交链表

21.合并两个有序链表

83.删除排序链表中的重复元素

19.删除链表的倒数第N个节点

24.K 个一组翻转链表

445.两数相加II

234.回文链表

725.分隔链表

328.奇偶链表

98.验证二叉搜索树

递归

22.括号生成

  1. 二叉树的最大深度
    110.平衡二叉树

543.二叉树的直径

226. 翻转二叉树

617. 合并二叉树

112.路径总和

437. 路径总和 III

572. 另一个树的子树

101. 对称二叉树

111. 二叉树的最小深度

112. 路径总和

404. 左叶子之和

687. 最长同值路径

337. 打家劫舍 III

671. 二叉树中第二小的节点

124. 二叉树中的最大路径和

744.寻找比目标字母大的最小字母

层次遍历
637. 二叉树的层平均值
513. 找树左下角的值
前中后序遍历
144. 二叉树的前序遍历
145. 二叉树的后序遍历
94. 二叉树的中序遍历
BST.
669. 修剪二叉搜索树

230. 二叉搜索树中第K小的元素

Convert BST to Greater Tree.

235二叉搜索树的最近公共祖先
236.二叉树的最近公共祖先
108. 将有序数组转换为二叉搜索树
109. 有序链表转换二叉搜索树
653. 两数之和 IV - 输入 BST
530. 二叉搜索树的最小绝对差
501. 二叉搜索树中的众数
208. 实现 Trie (前缀树)
677. 键值映射

栈和队列

232.用栈实现队列
225.用队列实现栈
155.最小栈
20.有效的括号
739.每日温度
503.下一个更大元素 II

哈希表

217.存在重复元素

594. 最长和谐子序列

128. 最长连续序列

字符串

242.有效的字母异位词

409.最长回文串

205.同构字符串

647.回文子串

9.回文数

696.计数二进制子串

数组与矩阵

283.移动零
566.重塑矩阵
485.最大连续1的个数
240.搜索二维矩阵 II
378.有序矩阵中第K小的元素
645 .错误的集合
287.寻找重复数
667.优美的排列 II
697.数组的度
565.数组嵌套
769.最多能完成排序的块

785.判断二分图
207. 课程表
208. 课程表 II
位运算
461. 汉明距离
136. 只出现一次的数字
268. 丢失的数字
260. 只出现一次的数字 III
190. 颠倒二进制位
231. 2的幂
342. 4的幂
693. 交替位二进制数
476. 数字的补数
371. 两整数之和
318. 最大单词长度乘积
338. 比特位计数

如果这篇文章对你有用的话,请点击下方的一键三连,感谢感谢!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[C++]Leetcode超高效刷题顺序及题目详解笔记(持续更新中) 的相关文章

  • css不常用属性

    1 出现滑动使用overflow xff1b 2 左右居中最常用的两种方法是margin 0 auto和text align center 3 透明背景使用transparent属性而不是使用rgba中的透明度数值来调节 4 文字连字符样式
  • 记录第一次互联网面经Momenta

    作为车辆的学渣 xff0c 去年开始研究图像算法 xff0c 也是第一次面纯做自动驾驶的公司 xff0c 留个纪念吧 1 简历过了第二天 xff0c HR就给打电话了 xff0c 还是非常效率的 xff0c 简单聊了两句就约了面试的时间 2

随机推荐

  • 大学学计算机专业高中怎样选课,高中选课大学对应专业 选什么科目能学的专业多...

    高中选课大学对应什么专业呢 xff0c 选什么科目大学可以选的专业多呢 xff0c 哪些组合是不推荐选择的呢 xff0c 下面小编为大家分析一下 xff0c 仅供大家参考 高中选课大学对应什么专业 新高考怎样选择学习的学科 第一 xff0c
  • GIT服务器配置

    GIT server build up 前几天说的任务启动了 xff0c 虽然server还在采购流程中 但已经在一台PC机上搞起来 xff0c 供小组内部测试啦 在此把过程记录下来吧 xff1a 硬件需求 xff1a 一台linux电脑
  • zookeeper(1)——zookeeper服务器集群搭建配置

    Zookeeper分布式集群管理系统 Author xff1a xusy 参考教程 xff1a http www cnblogs com z sm p 5691752 html 1 zookeeper下载 xff1a http mirror
  • ubuntu下安装intel realsense驱动

    在安装之前一定要确保系统是ubuntu 14 04 3 64位 xff01 由于一开始安装的是32位系统 xff0c 导致在升级内核版本到4 4时各种问题 xff0c 最终靠重装系统解决 因为intel给出的测试代码均是在64位14 04
  • linux网卡顺序发生变化,Linux 多网卡识别顺序邦定

    转自 http linux iyunv com bbs thread 1175497 1 1 html 使用linux系统时会出现这样的情况 xff0c 当你安装了某个网卡的驱动程序时 xff0c 或者安装了与网卡相关的程序后 网卡会出现所
  • js特效代码-onmouseover/onclick 改变标签(背景)颜色

    lt html gt lt head gt lt meta http equiv 61 34 Content Type 34 content 61 34 text html charset 61 gb2312 34 gt lt title
  • 利用Sphinx编写文档

    利用Sphinx编写文档 1 Sphinx简介和使用理由 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 Sphinx是一个用Python语言编写而成的文档编写工具 用Sphinx编写文
  • 通讯技术

    串口通讯基础 串口基本接线方法 xff08 作者 xff1a 龚建伟 2001 6 24 xff09 本文介绍了串口常用接线方法及注意事项 有关RS232与RS485接口的问答 来自中国工控网 xff09 RS232与RS485接口的区别及
  • microsoft微软登录新账户/切换账户失败,一直转圈,提示“你似乎没有连接到internet”

    无论有没有微软账户 xff0c 是切换账户还是新电脑登录 xff0c 原理都是一样的 xff0c 先使用一个账号注册 登录 设置好微软账户 xff0c 然后再进行你原本的操作 在可以进入到桌面并且联网的情况下 xff0c 登录不上微软账户的
  • 如何改善GPS的漂移?

    GPS飘移一直以来都是令用户和厂家比较头疼的问题 xff0c 也是很多用户选择GPS的首选指标 xff0c 好的产品定位精准 xff0c 漂移很小 xff0c 那么如何改善GPS的漂移 xff1f 1 xff09 纯软件方法 通过软件滤波算
  • Proteus仿真与实际的差别

    最近刚做好一个站 xff0c 基于rails 3 xff0c 教程为主 xff0c 大家捧场看看 xff0c 谢谢 xff01 www yo945 com 弄了几天的Proteus仿真 xff0c 终于觉得自己想做的东西 xff0c 已经全
  • 串口调试助手-打开报错

    问题 xff1a 串口调试助手sscom33打开报错 xff0c 报错信息如下图 解决方法 xff1a 1 将串口设备连接到电脑 1 xff09 若是台式机 xff0c 则直接用串口线连接电脑和串口设备 2 xff09 若是笔记本电脑 xf
  • 基于变分自编码器(VAE)利用重建概率的异常检测

    本文为博主翻译自 xff1a Jinwon的Variational Autoencoder based Anomaly Detection using Reconstruction Probability xff0c 如侵立删 http d
  • 让Eclipse的自动提示更加智能

    ddd在Eclipse MyEclipse的默认设置中 xff0c 只有输入一个点号后才自动提示 xff0c 不太友好 xff0c 我们把他修改一下 xff0c 只要输入字母就有提示 Windows Preferences Java Edi
  • 驱动的本质

    驱动的本质 参考 xff1a www zhihu com question 33 2 驱动程序的本质 xff01 CPU要与IO模块传送数据 xff0c 要编程 xff0c 这个与IO模块传送数据的程序就是 34 驱动程序 34 驱动程序的
  • c语言中变量/函数命名以单下划线(_)和双下划线(__) 开头的意义

    以单下划线 xff08 xff09 表明是标准库的变量 双下划线 xff08 xff09 开头表明是编译器的变量 建议自己在命名的时候不要用下划线开头 xff0c 避免与标准库中的命名冲突 命名方法有好多 xff0c 何必为自己找不自在呢
  • PADS9.5 原理图和封装制作——以STM32F103为例

    1 进入元件编辑有两种方法 xff0c 第一种 xff1a 文件 库 第二种 xff1a 工具 元件编辑器 2 选定你要保存的库 xff0c 选择元件 xff0c 按新建按钮 3 选择下面按钮进入编辑界面 xff0c 如果是建的新库里面没有
  • 转载:Pixhawk源码笔记一:APM代码基本结构

    转自 新浪微博 64 WalkAnt 基础知识 详细参考 xff1a http dev ardupilot com wiki learning the ardupilot codebase 第一部分 xff1a 介绍 详细参考 xff1a
  • Python startswith()函数 与 endswith函数

    函数 xff1a startswith 作用 xff1a 判断字符串是否以指定字符或子字符串开头 一 函数说明 语法 xff1a string startswith str beg 61 0 end 61 len string 或strin
  • [C++]Leetcode超高效刷题顺序及题目详解笔记(持续更新中)

    一 前言 博主最近在LeetCode上用C 43 43 练习 一路走来踩过一些坑 xff0c 做了一些总结和笔记 xff0c 分享给需要的人 LeetCode中文版 xff1a https leetcode cn com 二 介绍 Leet