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

2024-04-22 05:20

本文主要是介绍代码随想录系统性一刷总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

数组

指针思想很重要

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函数,具体问题具体分析

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.chinasem.cn/article/924906

相关文章

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时