- 博客(39)
- 收藏
- 关注
原创 【代码随想录算法训练营Day10】栈与队列理论基础;232.用栈实现队列;225.用队列实现栈
栈提供push 和 pop 等等接口,所有元素必须符合先进后出规则,所以栈不提供走访功能,也不提供迭代器(iterator)。不像是set 或者map 提供迭代器iterator来遍历所有元素。栈是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(也就是说我们可以控制使用哪种容器来实现栈的功能)。当要pop时,先把队列除要pop的数字之外都弹出然后重新加到队列中。用两个栈来实现队列(双栈模拟队列)队列是先进先出,栈是先进后出。
2024-03-10 09:32:16 480
原创 【八股文整理Day01计网】01-06
第二次挥手只是回应客户端,表示我收到了,但可能无法立刻确认关闭请求,当服务器所有数据都发送完毕后,再同时发送FIN和ACK来确认关闭请求,所以必须是四次。
2024-03-09 16:48:50 1032
原创 【代码随想录算法训练营Day40】01背包问题一维dp数组;二维dp数组(滚动数组);416.分割等和子集
如果做过背包类问题,可以先看视频,很多内容,是自己平时没有考虑到位的。背包问题,力扣上没有原题,大家先了解理论,今天就安排一道具体题目。正式开始背包问题,背包问题还是挺难的,虽然大家可能看了很多背包问题模板代码,感觉挺简单,但基本理解的都不够深入。如果是直接从来没听过背包问题,可以先看文字讲解慢慢了解 这是干什么的。物品要从第二个开始,也就是i要从1开始。利用回溯列举出每一种方法。
2024-03-09 10:48:18 1103
原创 【代码随想录算法训练营Day40】343.整数拆分;96.不同的二叉搜索树
今天两题都挺有难度,建议大家思考一下没思路,直接看题解,第一次做,硬想很难想出来。n为1的时候有一棵树,n为2有两棵树,这个是很直观的。
2024-03-09 00:03:03 1041
原创 【代码随想录算法训练营Day30】回溯算法总结(题暂时跳过,做完补上)
文章链接:https://programmercarl.com/%E5%9B%9E%E6%BA%AF%E6%80%BB%E7%BB%93.html。
2024-03-08 18:41:24 407
原创 【代码随想录算法训练营Day29】 491.递增子序列;46.全排列;47.全排列 II
所以要从集合中判断当前数在前面的集合中有没有出现过,所以自然想到哈希表,规定:遇到相同的几个数,先固定第一个,再固定第二个。先固定数组中的一个值,然后再固定排列剩下的值。所以需要一个参数来表示数组中的数有没有被固定。这样做就需要给数组排个序使相同的数字挨在一起。
2024-03-08 17:47:10 862
原创 【代码随想录算法训练营Day27】93.复原IP地址;78.子集;90.子集II
和上一题一样只需要遇到相同数时判断一下前面相同的数是否被用过,所以添加参数boolean visited[]判断数有没有被用过。从图中红线部分,可以看出遍历这个树的时候,把所有节点都记录下来,就是要求的子集集合。不需要用path存储答案了,只需要在原数组s上插入’.’严格按照模板来,和组合逻辑一样,只是添加逻辑不一样。(3.8补)有点忘了回溯法了,看了下文章思路。
2024-03-08 09:51:59 920
原创 【代码随想录算法训练营Day39】62.不同路径;63. 不同路径 II
今天开始逐渐有 dp的感觉了,题目不多,就两个 不同路径,可以好好研究一下。遇到障碍之后可以不初始化,没赋值默认为0。起始有障碍or终止有障碍直接返回0。可以在for循环中间添加条件。
2024-03-07 21:15:55 1090
原创 【代码随想录算法训练营Day38】动态规划理论基础;509.斐波那契数;70.爬楼梯;746.使用最小花费爬楼梯
动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。
2024-03-07 20:04:54 1185
原创 【代码随想录算法训练营Day37】738.单调递增的数字;总结
可以看看贪心算法的总结,贪心本来就没啥规律,能写出个总结篇真的不容易了。文章链接:https://programmercarl.com/%E8%B4%AA%E5%BF%83%E7%AE%97%E6%B3%95%E6%80%BB%E7%BB%93%E7%AF%87.html符号:思路🟢自己的思路和随想录一样🟡自己有思路但随想录思路更好🔴自己毫无思路代码🟩自己写出来且和随想录一样🟨通过但还有其他方法🟥写不出来or没写。
2024-03-05 18:53:04 535
原创 【代码随想录算法训练营Day34】860.柠檬水找零;406.根据身高重建队列;452.用最少数量的箭引爆气球
如果气球重叠了,重叠气球中右边边界的最小值 之前的区间一定需要一个弓箭。用lambda表达式会溢出,排不了序,必须使用比较器。为了让气球尽可能的重叠,需要对数组进行排序。和我的基本一样只是换成if-else。此时就按照题目的要求完成了重新排列。利用switch case语句判断。先以ki排序然后再通过hi插入。难点:不会对二维数组进行排序。就是一个取交集的问题。
2024-03-04 22:38:18 1013
原创 【代码随想录算法训练营Day35】435.无重叠区间;763.划分字母区间;56.合并区间
在遍历的过程中相当于是要找每一个字母的边界,如果找到之前遍历过的所有字母的最远边界,说明这个边界就是分割点了。今天的三道题目,都算是 重叠区间 问题,大家可以好好感受一下。都属于那种看起来好复杂,但一看贪心解法,惊呼:这么巧妙!我来按照右边界排序,从左向右记录非交叉区间的个数。最后用区间总数减去非交叉区间的个数就是需要移除的区间个数了。不过大家把如下三题做了之后, 重叠区间 基本上差不多了。还是属于那种,做过了也就会了,没做过就很难想出来。还和452一样,通过先确定右区间再判断左区间的方式。
2024-03-04 22:31:14 927
原创 【代码随想录算法训练营Day33】1005.K次取反后最大化的数组和;134.加油站;135.分发糖果
i从0开始累加rest[i],和记为curSum,一旦curSum小于零,说明[0, i]区间都不能作为起始位置,因为这个区间选择任何一个位置作为起点,到i这里都会断油,那么起始位置从i+1算起,再从0计算curSum。因为 rating[5]与rating[4]的比较 要利用上 rating[5]与rating[6]的比较结果,所以 要从后向前遍历。如果从前向后遍历,rating[5]与rating[4]的比较 就不能用上 rating[5]与rating[6]的比较结果了。
2024-03-04 12:09:44 1005
原创 【代码随想录算法训练营Day32】122.买卖股票的最佳时机II;55.跳跃游戏;45.跳跃游戏II
如果移动下标等于当前覆盖最大距离下标, 需要再走一步(即 ans++),因为最后一步一定是可以到的终点。从图中可以发现,其实我们需要收集每天的正利润就可以,收集正利润的区间,就是股票买卖的区间,而我们只需要关注最终利润,不需要记录区间。针对于方法一的特殊情况,可以统一处理,即:移动下标只要遇到当前覆盖最远距离的下标,直接步数加一,不考虑是不是终点的情况。从图中可以看出来,就是移动下标达到了当前覆盖的最远距离下标时,步数就要加一,来增加覆盖距离。总结:每次只走一步,求当前数可以覆盖到的范围,取最大的范围。
2024-03-02 23:17:28 935
原创 【代码随想录算法训练营Day31】理论基础; 455.分发饼干; 376.摆动序列; 53.最大子序和
弯路:一开始用的是for循环但for循环中遍历的是饼干,应该遍历小孩的胃口,因为for循环会风雨无阻的–贪心算法其实就是没有什么规律可言,所以大家了解贪心算法 就了解它没有规律的本质就够了。基本贪心的题目 有两个极端,要不就是特简单,要不就是死活想不出来。学完贪心之后再去看动态规划,就会了解贪心和动规的区别。不用花心思去研究其规律, 没有思路就立刻看题解。局部最优:用大饼干满足尽量大胃口的孩子。也可以用小饼干尽量满足胃口小的孩子。利用for循环遍历小孩胃口。
2024-03-02 16:25:31 1048
原创 【代码随想录算法训练营Day26】● 39. 组合总和;● 40.组合总和II;● 131.分割回文串
剪枝条件:当剩余备选数都比需要的数小时就不用遍历了。注意必须按顺序输出所以用队列不能用栈。先用自己和自己组合,直到超出。与39几乎一模一样,区别在于。
2024-02-24 20:42:37 968
原创 【代码随想录算法训练营Day25】● 216.组合总和III ● 17.电话号码的字母组合
创建一个字符串类型的数组,用来做数字与字母之间的映射。
2024-02-22 22:51:49 477
原创 【代码随想录算法训练营Day24】● 回溯法理论基础 ● 77. 组合
程序在运行过程中分成了多个阶段通过某些手段将数据恢复到之前的某一阶段,就称之为回溯手段包括:1. 方法栈;2. 自定义栈。
2024-02-22 21:03:04 986
原创 【代码随想录算法训练营Day19】● 654.最大二叉树● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树
中序遍历把结果存储在数组里,然后通过对比中序遍历输出的数是否比上一个数大来实现。❗在力扣如果全局变量和函数全为static则不通过。当参数数组中只有一个值时就不需要进入for循环了。思路:从上往下遍历root直到root为空。不重新建一个二叉树,直接修改root1。
2024-02-19 10:43:56 851 1
原创 【代码随想录算法训练营Day18】● 513.找树左下角的值 ● 112. 路径总和 113.路径总和ii ● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍
优化思路:只定义一个int类型的res,for循环的第一个数就赋给res即可。用层序遍历,把每层第一个数加入一个新栈,返回栈顶即可。同113,只是返回值变为true和false。思路:找深度最大的叶子节点最左侧的节点。是否为0来确定是否是一条正确的路径。走到叶子节点通过判断。
2024-02-18 20:45:10 780 1
原创 【代码随想录算法训练营Day17】● 110.平衡二叉树;● 257. 二叉树的所有路径;● 404.左叶子之和
因为平衡二叉树的概念是每个节点的左右子树高度差的绝对值不大于1,所以就可以比较每个节点左右子树的。另一个疑问,为啥不能用int类型直接加,哦应该用返回,不能作为参数。精准踩雷,没看清是左叶子,以为是所有左节点。
2024-02-16 18:08:49 940 1
原创 【代码随想录算法训练营Day08】转字符串; 541. 反转字符串II; 卡码网:54.替换数字; 151.翻转字符串里的单词; 卡码网:55.右旋转字符串
for循环内不要直接写i++,写成i+=2k,这样一次操作2k个字符就很方便。先把s分成几个长度为2k的字符串,然后进行交换。返回字符的字符串形式,字符串的长度仅为1。:在文中该处插入一个tab键。:在文中该处插入一个后退键。:在文中该处插入换页符。:在文中该处插入单引号。:在文中该处插入双引号。:在文中该处插入反斜杠。双指针不断往中间移动。:在文中该处插入回车。
2024-02-12 20:54:47 925 1
原创 【代码随想录算法训练营Day07】454.四数相加II; 383. 赎金信; 15. 三数之和; 18. 四数之和
与上一题两数相加思路类似,只不过就是把四个数组分成两组先遍历前两个数组将。四数之和固定一个数就转换成三数之和了,与三数之和合并,写一个递归的代码。再遍历后两个数组看Map中有没有。想到用Map没想到用数组TT。
2024-02-12 16:07:00 968 1
原创 【代码随想录算法训练营Day16】● 104.二叉树的最大深度;●559.n叉树的最大深度;● 111.二叉树的最小深度;● 222.完全二叉树的节点个数
所以只需要对单条腿的二叉树进行条件判断,只有右子树就按左子树深度算,只有左子树就按右子树深度算。当遍历到叶子节点(即没有左节点也没有右节点)时,当前层数就是最小深度,其他思想与最大深度相同。如果根据求二叉树最大深度的递归代码来写的话,一条腿的二叉树最小深度就是0了,不符合题意。通过层序遍历先判断每一层有几个元素,通过将每一层套进一个循环,计算循环次数即可。
2024-02-11 23:40:35 845 1
原创 【代码随想录算法训练营Day15】●102.二叉树的层序遍历;● 226.翻转二叉树;● 101.对称二叉树 2
【代码】【代码随想录算法训练营Day15】●102.二叉树的层序遍历;● 226.翻转二叉树;● 101.对称二叉树 2。
2024-02-09 17:41:55 491 1
原创 【代码随想录算法训练营Day14】144.二叉树的前序遍历;145.二叉树的后序遍历;94.二叉树的中序遍历;● 理论基础;● 递归遍历;● 迭代遍历;● 统一迭代
虽然前中后序遍历规律不一样,但走的路径都相同,只是打印顺序不同。🌰以中序遍历为例,前序遍历和后序遍历就是递归顺序不一样。后序需要添加弹出栈的条件。
2024-02-06 16:07:47 945 1
原创 【代码随想录算法训练营Day06】242.有效的字母异位词; 349. 两个数组的交集; 202. 快乐数; 1. 两数之和
哈希表是根据关键码的值而直接进行访问的数据结构。哈希表相当于自己写一个Java程序与数据库之间的缓存层(1)数组+链表(2)数组+二叉树eg:数组就是一张哈希表哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素一般哈希表都是用来快速判断一个元素是否出现集合里。1. 先通过哈希函数把元素全部映射到哈希表上2. 查询时就通过索引看所查元素在不在表上Java集合可分为Collection和Map两种体系单列数据,定义了存取一组对象的方法的集合元素有序,可重复的集合。
2024-01-30 12:32:38 810 1
原创 【代码随想录算法训练营Day04】24.两两交换链表中的节点; 19.删除链表的倒数第N个节点; 面试题 02.07. 链表相交; 142.环形链表II; 总结
链表一定要分清节点和指针的概念。是真实存在的一个节点,相当于 head指针指向了一个真实的节点,, 相当于node和head同时指向了这个真实的节点尽量不要去动虚拟头节点,因为虚拟头节点本来就是个工具节点,操作后面的节点本身就好。
2024-01-28 18:55:31 942
原创 【代码随想录算法训练营Day03】203.移除链表元素; 707.设计链表; 206.反转链表
链表是以节点的方式来存储,是链式存储每个节点包含data域,next域(指向下一个节点)链表的各个节点不一定是连续存储链表分带头节点的链表和不带头节点的列表(根据实际的需求来确定)链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链表的入口节点称为链表的头结点也就是head。
2024-01-26 21:11:13 910 1
原创 【代码随想录算法训练营Day02】977.有序数组的平方;209.长度最小的子数组;59.螺旋矩阵II;数组总结
题目建议:希望大家 也做一个自己 对数组专题的总结。
2024-01-12 15:20:31 1026 1
原创 【代码随想录算法训练营Day01】704. 二分查找; 27. 移除元素
区间的定义就是不变量,要在二分查找的过程中,保持不变量,在while寻找中每一次边界的处理都要坚持根据区间的定义来操作,这就是循环不变量规则。二分法区间的两种写法:左闭右闭or 左闭右开。
2024-01-11 23:09:49 978
原创 软件测试PPT
软件测试软件测试概述什么是软件测试软件测试原理软件测试过程什么是测试用例测试类型开发阶段技术执行状态执行组织优秀测试人员总结白盒测试白盒测试基本路径测试思路流图符号流程图与流图流图定义基本路径计算复杂性环形复杂性导出测试用例图矩阵法条件测试数据流测试黑盒测试软件测试覆盖分析⭐️ 重点✅ 掌握❓ 疑问❗ 难点🌈 概念解释✨ 突出软件测试概述什么是软件测试软件测试原理软件测试过程(核心)重点难点:设计和生成测试用例⭐️重点代表性 可判定性 可再现性什么是测试用例测试
2022-05-21 19:39:21 1821
原创 计算机网络 第二章物理层 自整理笔记
计算机网络第二章 物理层(重点掌握基本概念)2.1 物理层的概念2.1.1 ⭐️物理层所要解决的问题2.1.1 ⭐️物理层协议的主要任务2.2 物理层下的传输媒体(了解)2.2.1导引型传输媒体2.2.1.1同轴电缆2.2.1.2 ✅双绞线(绞合目的)2.2.1.3 ✅光纤(传播原理)2.2.1.4 电力线2.2.2 非导引型传输媒体2.2.2.1 无线电波2.2.2.2 ✅微波(特性及应用)2.2.2.3 红外线2.2.2.4 可见光2.2.3 无线电频谱管理机构2.3 传输方式2.3.1 ⭐️串行 vs
2022-03-07 17:30:36 7886
原创 计算机网络 第一章概述 自整理笔记
计算机网络第一章 概述1.2互联网概述1.2.1 ✅网络、互联网(互连网)和因特网1.2.2因特网发展的三个阶段1.2.3 因特网的标准化工作1.2.4 ✅因特网的组成(边缘+核心)1.3 三种交换方式1.3.1 电路交换1.3.2 ✅分组交换1.3.3 报文交换1.3.4 对比1.4 计算机网络的定义和分类1.4.1 计算机网络的定义计算机网络的分类1.5 计算机网络的性能指标1.5.1 速率1.5.2 带宽1.5.3 吞吐量⭐️ 重点✅ 掌握❓ 疑问❗🌈 概念解释✨ 突出第一章 概述1.
2022-03-03 19:18:22 2457
原创 JDK与Java的区别
JDKJDK 是Java开发工具包 (Java Development Kit ) 的缩写。从字面意思翻译过来就是java开发的工具。它是一种用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境。其中包括了JVM、Java编译器、大量的Java工具以及Java基础API里面是Java类库和Java的语言规范。Java8, JDK8jdk是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK(Java Development .
2022-02-07 16:06:23 6721
原创 Rational Rose在Win10闪退的解决方法
Rational Rose安装好了之后一直闪退,在CSDN上查一直说要重启,我安装了好多次重启也没有用,还时闪退,后来在百度知道上看到的的方法竟然有用!转载于https://zhidao.baidu.com/question/100198996.html
2021-12-15 18:32:21 3851 13
原创 Dos命令
打开cmd的方式开始 + 系统 + 命令提示符Win键 + R键 输入cmd打开控制台(推荐使用)在任意文件夹下,按住shift键 + 鼠标右键点击,在此处打开命令行窗口资源管理器的地址栏前面加上 cmd 路径管理员方式运行:选择以管理员方式运行常用的Dos命令#盘符切换 D:(英文冒号)#查看当前目录下的所有文件 dir#切换目录 cd (change directory)#返回上一级 cd .. #跨盘切换目录 cd /d#清理屏幕 cls (clear screen)#
2021-07-19 18:23:19 90
原创 Markdown学习
Markdown学习二级标题三级标题四级标题字体Hello, World!Hello, World!Hello, World!Hello, World!引用选择狂神说Java,走向人生巅峰分割线图片超链接点击跳转到QQ空间列表ACABC表格名字性别生日张三男1997.1.1代码public ...
2021-07-19 17:47:36 117
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人