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

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

相关文章

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)