代码随想录系统性一刷总结

devtools/2024/9/20 7:27:26/ 标签: leetcode, java

代码随想录系统性一刷总结

数组

指针思想很重要

day01 二分查找+移除元素
day02 数组平方+长度最小子数组+螺旋矩阵II

链表

链表结点的增删改查,头结点的运用,灵活运用指针

day03 移除链表元素+设计链表+翻转链表
day04 交换结点+删除结点+链表相交+环形列表

哈希表

灵活使用hashset,几数之和指针再次出马,理解去重和剪枝操作

day06 字符串异位词+数组交集+快乐数+两数之和
day07 赎金信+四数之和+三数之和

字符串

灵活运用指针,熟悉stringBuffer的用法

day08 反转字符串+反转字符串中的单词+右旋字符串+替换数字

KMP算法
day09 KMP

栈与队列

熟悉ArrayList、Stack的用法

day10 队列<<==>>栈
day11 括号匹配+字符串消除重复项+逆波兰表达式
day13 滑动窗口最大值+前K个高频元素

二叉树

熟悉二叉树结点的递归

day14 二叉树的前序、中序、后序遍历
day15 翻转二叉树+对称二叉树+遍历二叉树
day16 最大/最小深度+完全二叉树结点个数
day17 平衡二叉树+二叉树所有路径+左叶子之和
day18 左下角结点+路径总和+中序后序推树
day20 最大二叉树+合并二叉树+搜索二叉搜索树+验证二叉搜索树
day21 二叉搜索树的最小绝对差+众数+最近公共祖先
day22 二叉搜索树插入+删除+最近祖先
day23 修建二叉搜索树+有序数组转换成二叉搜索树+累加树

回溯

主体套回溯模板,重写backtracing函数,具体问题具体分析

java">class Solution {定义类变量res;public List<List<Integer>> 函数名(参数列表) {backtracing(参数列表);return 类变量res;}public void backtracing(参数列表) {if(判断) {res.add(路径);return;}for(遍历i) {path.add(i);backtracing(参数列表);path.removeLast();}}
}
  1. 选择:在当前状态下,尝试所有可能的选择。
  2. 递归:对每一种选择,递归地调用函数进行下一步的选择。
  3. 撤销选择:在递归返回后,撤销当前状态的选择,回到上一步。

day24 组合
day25 组合总和III+电话号码
day27 组合总和+组合总和II+分割回文子串
day28 复原IP+子集I、II
day29 递增子序列+全排列I、II
day30 行程安排+N皇后

贪心

套路是比较大小

  1. 定义贪心选择属性:找到一个局部最优解,通常是在满足某些条件下的最优解。
  2. 做出选择:基于定义的贪心选择属性,做出一个局部最优的选择。
  3. 更新当前问题状态:根据做出的选择,更新当前问题的状态。
  4. 判断是否结束:如果当前问题已经解决,结束;否则,返回步骤2。

day31 发饼干+摆动序列+最大字数组和
day32 股票买卖+跳跃游戏I、II
day34 k次取反后数组最大值+加油站+分发糖果
day35 柠檬水找零+根据身高重建队列+最少数箭引爆气球
day36 无重叠区间+划分字母+合并区间
day37 单调递增的数字+监控二叉树

动态规划

熟悉dp数组的含义

  1. 定义状态:通常需要定义一个或多个状态变量来表示问题的子状态。
  2. 初始化状态:设置初始状态的值,通常这些值是已知的或容易计算的。
  3. 状态转移方程:找到状态之间的转移关系,通常是递推关系,来表示子问题之间的依赖关系。
  4. 计算结果:使用状态转移方程计算出最终的结果。

day38 斐波那契+爬楼梯+最小代价爬楼梯
day39 不同路径I、II
day41 整数拆分+不同的二叉搜索树
day42 背包问题+划分两个子集之和
day43 撞石头+加正负号得到目标和+0和1计数子集
day44 背包2+统计和=target的集合个数
day45 爬楼梯+完全平方数+零钱组合
day46 单词拆分
day48 打家劫舍I、II、III
day49 买卖股票的最佳时机I、II
day50 买卖股票的最佳时机III、IV
day51 买卖股票冷冻期+手续费
day52 最长递增子序列+最长连续递增子序列+最长重复子数组
day53 最长重复字符串(不一定连续)+数组不交叉连线(不一定连续)+最大子序和(连续)
day55 判断是不是子序列+判断子序列个数
day56 删除字符串+编辑距离(字符串增删改
day57 回文子序列个数+最长回文子序列

单调栈

双指针重出江湖,理解如何优化暴力遍历
熟悉用单调递增栈解决时间复杂度的问题

  1. 遍历数组或列表,维护一个单调递增栈。
  2. 对于每个元素,如果当前元素比栈顶元素大,则将栈顶元素出栈,并更新结果。
  3. 如果当前元素比栈顶元素小,则将当前元素入栈。

day58 下一个更高温度+下一个更大元素
day59 下一个最大元素(可循环)+接雨水
day60 柱状图最大矩形面积


下面是本人的一些碎碎念,非战斗人员请立刻撤离!!!

说来惭愧,疫情放开的2023.1我就想,就算每天想一道题,到研二这会我应该可以慢慢刷完。事实上中间断断续续,到二叉树停了好长一段时间(应该是6个月),后面随之而来的科研论文项目,让我晕头转向,更让我清楚地认识到坚持是一件多么困难的事,而坚持一件困难的事,更是反人性的存在。

在9、10月任务少了一些之后,我从二叉树开始重新捡起来,这个重新开始的过程又伴随着痛苦和内耗,特别是小论文发出去之后,多少有点摆烂、及时行乐的心理,又是想起来刷一刷,想不起来就以内耗的名义看小说、追剧、追番。

于是春招实习叫醒了我这个装睡太久的人,眼看着周围一起出发的小伙伴,早就学完了JAVA基础、JAVAWeb、JAVA框架…,他们都在往前奔跑,都在准备下一阶段的项目、简历、八股和面试,我竟然还停留在学到一半的基础,一无所知的框架和刷过的题不一定能写出来,没刷过的题还有很多的力扣算法题这一部分。

我知道于我而言,内驱力是多么可笑的存在,我需要一个集体,一个审判我的集体,一个拉着我向前跑的集体,于是我在过完年之后,将自己封闭了一周,报了代码随想录算法训练营,(其实,我本以为这个训练营是坚持下来的人会退钱的,本着心疼钱坚持下来的Σ( °△°|||)︴)。

这个过程中我又一次感概历史总是不断的重演,因为,在开营两周后,我又一次来到二叉树,我又一次开始觉得没有意义、没意思,觉得我不行、我太菜了、我不适合写代码…内耗到无法起床,每天就是白天睡,晚上躺……还好看着表格里面大家每天都坚持的蓝字,我告诉我自己:”别人可以,我也行!”。

我到现在还记得,这段内心痛苦到只能掐自己、划自己、让自己肉体疼痛的日子,的某一天,我跑遍了学校的自习教室,到了最后一个教室,我坐下,告诉自己:“就在这里,把之前错过的卡补上吧。” 于是那一天,我连刷了7道二叉树,跟上了大部队的脚步。此后一路风雨兼程,再无缺卡。

我本意是想在总结篇写一个所有博客的大跳转,没想到心路历程写成了800字小作文hhh,那就把这部分也留在这里好了,每次回头的时候,看到自己已经走了这么远了,以后也一定一定要坚持走下去~
那,最后再留一段话给未来的自己:

这世间的种种苦难,一如地球上的风浪、阴霾、寒冰雨雪,而我们的意志,便是天上的星辰。苦难能遮挡我们的光芒,蒙蔽我们的感官,让我们黯然失色,但它永远不能真正的毁灭我们。
总有一天,阴云会散去,雨雪会终止,你的光芒会被所有人看到。
你将点亮无趣的夜空,组成浩瀚宇宙的一部分,使其璀璨夺目,持续闪耀。


http://www.ppmy.cn/devtools/6587.html

相关文章

uni-app学习记录

uni-app 基础 uni-app环境搭建 命令行搭建 基础使用差异说明 要使用滚动 <scroll-view scroll-y"true" class"h-600">类似于v-html <rich-text nodes"<h1>1123213</h1>" /> <editor /> - text-area生命周期…

【JavaWeb】Day47.Mybatis基础操作——删除

Mybatis基础操作 需求 准备数据库表 emp 创建一个新的springboot工程&#xff0c;选择引入对应的起步依赖&#xff08;mybatis、mysql驱动、lombok&#xff09; application.properties中引入数据库连接信息 创建对应的实体类 Emp&#xff08;实体类属性采用驼峰命名&#xf…

Python数据可视化库—Bokeh与Altair指南

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在数据科学和数据分析领域&#xff0c;数据可视化是一种强大的工具&#xff0c;可以帮助我们…

​面试经典150题——翻转二叉树

1. 题目描述 2. 题目分析与解析 分析题目可以看出&#xff0c;其实就是从下到上的左右节点互换操作&#xff0c;其实上也是可以进行递归操作的&#xff0c;这是因为每一个子操作和父操作都是一样的方式。 解题思路&#xff1a; 空树情况处理&#xff1a; 首先检查根节点是否…

聊聊linux的文件缓存

序 本文主要研究一下linux的文件缓存 文件缓存 linux使用page cache来缓存最近读取的文件&#xff0c;也有目录结构(dcache: Directory Entry Cache)缓存及inode缓存&#xff0c;它们都使用了LRU算法来管理这些page及dentries cache vmstat ## vmstat procs -----------me…

【数据结构2-线性表】

数据结构2-线性表 1 线性表-数组2 线性表-单链式结构2.1 前插顺序单链表2.2 后插顺序单链表2.3 循环单链表2.4 双向链表 总结 线性表、栈、队列、串和数组都属于线性结构。 线性结构的基本特点是除第一个元素无直接前驱&#xff0c;最后一个元素无直接后继之外&#xff0c;其他…

【C++】日期类Date(详解)

&#x1f525;个人主页&#xff1a;Forcible Bug Maker &#x1f525;专栏&#xff1a;C 目录 前言 日期类 日期类实现地图 获取某年某月的天数&#xff1a;GetMonthDay 检查日期合法&#xff0c;构造函数&#xff0c;拷贝构造函数&#xff0c;赋值运算符重载及析构函数…

【运维】docker-compose部署redis

部署Redis使用docker-compose是一种简便且流行的方式。以下是基本的docker-compose.yml文件示例&#xff0c;用于部署单节点Redis服务 方案一 直接使用docker安装单机版 创建.env环境文件并配置管理密码 echo REDIS_PWDredis123456 > .env创建docker-compose.yml环境文件…

【C语言】每日一题,快速提升(8)!

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 题目&#xff1a;金字塔图案 输入&#xff1a; 4输出&#xff1a; * * * * * * * * * * 代码&#xff1a; //对于有行有列的图形采用双循环&#xff0c;i控制行…

算法课程笔记——集合set

3复杂度不稳定 删一个和删除全部 注意iter是类 遍历是无序的

保护视力,从 CareUEyes 开始 —— 你的电脑护眼小助手

在数字化时代&#xff0c;我们的眼睛比以往任何时候都更频繁地面对屏幕。长时间盯着电脑工作&#xff0c;不仅影响视力&#xff0c;还可能导致眼疲劳和不适。今天&#xff0c;我要向大家推荐一款专为电脑用户设计的护眼软件——CareUEyes。 CareUEyes&#xff1a;你的视力守护者…

【Linux开发 第六篇】Linux常用命令知识

常用命令知识 关机和重启用户管理用户组运行级别帮助指令文件目录类时间日期类搜索查找类压缩和解压类 关机和重启 shutdown -h now //立刻进行关机 shutdown -h 1 “1分钟后进行” //一分钟后进行关机 并向登录Linux的各个用户发送字符串 shutdown -r now //现在重新启动…

最新在线工具箱网站系统源码

最新在线工具箱网站系统源码 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89080638 更多资源下载&#xff1a;关注我。

关于FastJson转换map集合为json字符串解析时格式出错的问题

在Java中使用Fastjson将包含Map类型key的Map集合转换为String时&#xff0c;如果直接使用Fastjson的JSON.toJSONString()方法&#xff0c;可能会因为JavaScript的安全性限制&#xff08;例如对象的key必须是字符串&#xff09;而在前端JavaScript解析时出现问题。 因为当 转换时…

最大子数组和(贪心)

53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 样例输入 示例…

元宇宙-虚拟世界的安全风险如何应对

元宇宙&#xff08;Metaverse&#xff09;是一个虚拟时空间的集合&#xff0c;由一系列的增强现实&#xff08;AR&#xff09;、虚拟现实&#xff08;VR&#xff09;和互联网&#xff08;Internet&#xff09;所组成。这个虚拟时空间是一个持续存在的、由众多虚拟世界互相连接而…

Oracle 12c修改字符集的方法(解决数据导入后中文乱码,ORA-12899错误 列 的值太长)

之前在Windows上安装的Oracle&#xff0c;现在迁移到Linux上&#xff0c;把dmp文件导入Linux的时候发现字段的注释和存储过程中的中文是问号&#xff1f;&#xff0c;而且导入的时候还会报ORA-12899错误。其实这些都是字符集问题。 1、查询当前字符集 select * from nls_data…

第十五届蓝桥杯题解-握手

题目大意&#xff1a;有50个人组成的派对&#xff0c;每个人都要与其他所有人进行握手&#xff0c;但其中有7个人之间互相不握手&#xff0c;求握手多少次&#xff0c;a与b握手即b与a握手 思路&#xff1a;规定前7个人互相不握手&#xff0c;两重for循环暴力就好 代码&#x…

python操作数据库

1 关系型数据库ORM SQLAlchemy 安装 pip install SQLAlchemy 优点&#xff1a; 易用 损耗小 可移植性强 1.1 环境整备 安装插件 pip install mysqlclient 创建数据库 create database db1; 创建数据表 create table user( id int(10), name varchar(20), email varchar…

npm 常用命令详解

npm&#xff08;Node Package Manager&#xff09;是 Node.js 的包管理工具&#xff0c;用于安装、管理和发布代码包。以下是 npm 常用命令的详解&#xff1a; npm init&#xff1a;初始化一个新的 Node.js 项目&#xff0c;生成一个 package.json 文件&#xff0c;用于管理项目…