- 博客(59)
- 资源 (3)
- 收藏
- 关注
原创 代码随想录算法训练营第十三天(栈与队列)| 239. 滑动窗口最大值,347.前 K 个高频元素
代码随想录算法训练营第十三天(栈与队列)| 239. 滑动窗口最大值,347.前 K 个高频元素
2022-12-31 19:15:29
326
1
原创 代码随想录算法训练营第十一天(栈与队列)| 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值
代码随想录算法训练营第十一天(栈与队列)| 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值
2022-12-30 17:30:34
342
原创 代码随想录算法训练营第九天(字符串)| 28. 实现 strStr(),459.重复的子字符串
代码随想录算法训练营第九天(字符串)| 28. 实现 strStr(),459.重复的子字符串
2022-12-30 13:10:44
463
原创 代码随想录算法训练营第十天(字符串)| 232.用栈实现队列,225. 用队列实现栈
代码随想录算法训练营第十天(字符串)| 232.用栈实现队列,225. 用队列实现栈
2022-12-21 11:00:34
501
原创 代码随想录算法训练营第八天(字符串)| 344.反转字符串,541. 反转字符串II,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串
代码随想录算法训练营第八天(字符串)| 344.反转字符串,541. 反转字符串II,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串
2022-12-14 22:09:40
90
原创 代码随想录算法训练营第七天| 哈希表理论基础 ,454.四数相加II, 383. 赎金信, 15. 三数之和, 18. 四数之和
代码随想录算法训练营第七天| 哈希表理论基础 ,454.四数相加II, 383. 赎金信, 15. 三数之和, 18. 四数之和
2022-12-14 12:00:15
270
原创 代码随想录算法训练营第六天| 哈希表理论基础 ,242.有效的字母异位词 , 349. 两个数组的交集 ,202. 快乐数,1. 两数之和
代码随想录算法训练营第六天| 哈希表理论基础 ,242.有效的字母异位词 , 349. 两个数组的交集 ,202. 快乐数,1. 两数之和
2022-12-12 17:13:44
423
原创 代码随想录算法训练营第四天| 24. 两两交换链表中的节点 ,19.删除链表的倒数第N个节点 ,面试题 02.07. 链表相交 ,142.环形链表II
代码随想录算法训练营第四天| 24. 两两交换链表中的节点 ,19.删除链表的倒数第N个节点 ,面试题 02.07. 链表相交 ,142.环形链表II
2022-12-10 22:58:48
285
原创 代码随想录算法训练营第三天| 链表理论基础, 203.移除链表元素,707.设计链表,206.反转链表
代码随想录算法训练营第三天| 链表理论基础, 203.移除链表元素,707.设计链表,206.反转链表
2022-12-09 12:34:43
295
原创 代码随想录算法训练营第二天| 977.有序数组的平方, 209.长度最小的子数组, 59.螺旋矩阵II
代码随想录算法训练营第二天| 977.有序数组的平方, 209.长度最小的子数组, 59.螺旋矩阵II
2022-12-08 15:17:13
432
原创 LeetCode25.K 个一组翻转链表
LeetCode25. K 个一组翻转链表思路:我们懂得单链表翻转,这个问题就解决一大半了。单链表的翻转整体思路就是用循环记录并独立划出每个要翻转的子链表,记录好这个子链表的上一个链表的尾结点,以及下一个链表的头结点,实现两个链表间的连接,依次循环到遍历完整个链表。具体看代码注释。代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next;
2021-07-25 09:09:02
111
1
原创 LeetCode206. 反转链表
LeetCode206. 反转链表思路:这里涉及三个指针:pre:指向当前节点的前一个,因为我们需要实现翻转,需要把当前结点的next指向它。cur:当前结点,用来实现翻转。next:当前结点的下一个结点,用来实现链表的移动。看代码,思考一下就知道啦!代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListN
2021-07-25 09:05:30
78
原创 剑指offer13. 机器人的运动范围
剑指offer13. 机器人的运动范围思路:与剑指offer第十二题相似,用的是回溯法,首先判断该位置是否满足矩阵要求,是否满足题目要求(行坐标和列坐标的数位之和大于k的格子)以及该位置是否未被访问(设置一个boolean的矩阵来记录该位置是否被访问且被计数了),如果上述条件均满足就count加1并判断它的上下左右四个位置是否也满足条件。代码:class Solution { public int movingCount(int m, int n, int k) { //前提
2021-07-24 15:21:07
74
原创 解决Githup访问缓慢的问题
解决Githup访问缓慢的问题1,打开https://www.ipaddress.com/2,查询下面3个网址对应IP地址:140.82.113.3 github.com185.199.108.153 assets-cdn.github.com199.232.69.194 github.global.ssl.fastly.net如:进入该网址后往下滑会看到:点击后看到对应网址的ip地址:3,修改本地电脑系统hosts文件:Windows 系统中的文件路径:C:\WINDOWS\s
2021-07-03 16:48:35
302
2
原创 Python单元测试框架 unittest
Python单元测试框架 unittest目的和任务:能够利用Python测试框架编写测试程序,生成测试报告。实验环境:(1)window10操作系统;(2)python开发环境实验内容:unittest框架:① 一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行
2021-07-03 15:02:04
321
3
原创 剑指offer 12. 矩阵中的路径
剑指offer 12. 矩阵中的路径思路:这个题是一个用回溯法解决的经典题。这个题就是遍历该数组,找到第一个符合ch与word第一个字符i匹配后,就在ch处的上下左右再寻找与i下一个位置相匹配的字符。找到了继续上述操作,没找到就说明这个路径是不通的,需要回溯到上一个ch,然后继续上述操作比较。这枚举出了所有路径,只要有路径就返回true。代码:class Solution { public boolean exist(char[][] board, String word) {
2021-07-01 10:07:05
74
原创 类加载器ClassLoader
类加载器ClassLoader我们需要掌握类加载器的四个知识点(①概念,②种类(3种系统自带,一种自定义),③双亲委派机制,④沙箱安全机制)类加载器的概念:负责加载字节码文件即class文件,并且类加载器只负责加载class文件,不关心class文件是否可以运行,运行由执行引擎(Execution Engine)决定。比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载前提下才有意义,否则,即使这两个类来源于同一个Class文件,被同一个Java虚拟机加载,只要加载它的类加载器不同,则这两个
2021-06-30 00:32:20
144
4
原创 JVM体系结构
JVM体系结构JVM主要由四大部分组成:类加载器(Class Loader),运行时数据区(Runtime Data Area),执行引擎(Execution Engine),本地方法接口(Native Interface)。**ClassLoader类加载器:**负责加载字节码文件即class文件,并且类加载器只负责加载class文件,不关心class文件是否可以运行,则由执行引擎(Execution Engine)决定。**Runtime Data Area运行时数据区:**是存放数据的地区,分
2021-06-29 23:35:39
118
1
原创 JVM的位置
JVM的位置JVM:它是整个java实现跨平台的最核心的部分,由Java文件编译来的class文件,只有经过虚拟机解释才能被操作系统执行。一次编译,多处运行:JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的class文件(字节码),就可以在多种平台上不加修改地运行。也就是在程序运行前,Java源程序(.java)需要经过编译器编译成字节码(.class)。在程序运行时,JVM负责将字节码文件翻译成机器码并运行,也就是说,只要在不同平台上安装对应的JVM,就可以
2021-06-29 21:39:05
186
原创 剑指Offer11.旋转数组的最小数字
剑指Offer11.旋转数组的最小数字1.暴力法:我们可以直接遍历这个数组,显然这个方法的时间复杂度是O(n)。我们看到旋转数组的特点就是,可以划分为两个排序好的数组,最小的元素正是这两个数组的分界线,因此我们可以不用完全遍历完这个数组。class Solution { public int minArray(int[] numbers) { int min = numbers[0]; for (int i = 1; i < numbers.length;
2021-06-29 18:58:51
55
原创 剑指offer07.重建二叉树
重建二叉树我们先弄懂一下为什么知道了先序序列和中序序列就能够完成二叉树的重建。二叉树前序遍历的顺序为:先遍历根节点;随后递归地遍历左子树;最后递归地遍历右子树。二叉树中序遍历的顺序为:先递归地遍历左子树;随后遍历根节点;最后递归地遍历右子树。所以说先序序列的第一个就是我们的根节点我们依据下面的例子画图来理解二叉树重建的过程:前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]从上面我们知道了二叉树的重建过程,我们发现每一个二叉
2021-06-28 21:57:35
74
原创 小白教你合并区间
小白教你合并区间思路:这个题需要知道Colletions中的sort排序JDK1.8开发文档这里我用的是:static <T> voidsort(List<T> list, Comparator<? super T> c)根据指定的比较器引起的顺序对指定的列表进行排序。我们按区间起点进行升序排列后,从第一个区间开始,比较该区间的终点,与下一个区间的起点的大小,如果该区间的终点大于它下一个区间的起点,则需要合并区间,否则跳过该区间到下一
2021-06-28 09:07:00
312
原创 剑指 Offer 06. 从尾到头打印链表
从尾到头打印链表方法1:利用栈,先把链表中的元素,依次放入栈中,并得到多少个数值,从而定义一个数组,然后依次出栈保存到数组中。我们熟悉一下栈中的基本方法:boolean empty() 测试堆栈是否为空Object peek( ) 查看堆栈顶部的对象,但不从堆栈中移除它。Object pop( ) 移除堆栈顶部的对象,并作为此函数的值返回该对象。Object push(Object element) 把项压入堆栈顶部。int size() 返回栈的大小int search(Object
2021-06-24 18:00:55
60
2
原创 剑指 Offer 05. 替换空格
剑指 Offer 05. 替换空格替换空格思路:new一个StringBuilder,遍历字符串,遇到空格就在new的StringBuilder加%20,不是空格就加原来的值。这里就会遇到一个面试题:说一说String和StringBuffer有什么区别参考答案String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过St
2021-06-24 17:01:37
80
原创 剑指offer 04 二维数组中的查找
剑指offer 04 二维数组中的查找二维数组中的查找思路:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]这个题可以直接用暴力法找出目标值。但从上面的示例可以看出,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。如果我们从最左下角找,也就是上述示例的18。如果目标值大于该值
2021-06-24 16:30:04
54
原创 实验三,基于Unittest框架的单元测试
实验三,单元测试一,实验目的(1) 掌握单元测试技术,并按单元测试的要求设计测试用例。(2) 能熟练应用功能性测试技术进行测试用例设计;(3) 能熟练应用结构性测试技术进行测试用例设计;(4) 对测试用例进行优化设计;二, 实验环境主流PC机一套,要求安装windows操作系统、PyCharm开发工具和OFFICE工具;三,实验内容:三角形问题:接受三个正整数a、b、c作为输入,用做三角形的边。三边必须满足条件: 0<a、b、c≤200;程序的输出是由这三条
2021-06-24 15:45:06
1430
1
原创 剑指 Offer 03. 数组中重复的数字
数组中重复的数字方法一利用哈希表来解决问题,从头到尾扫描数组的每个数字,每扫描一个数字,多可以用O(1)的时间来判断是否已经包含了该数。如果哈希表中没有这个数,就把这个数加入哈希表中,有的话返回结果,这种算法的时间复杂度是O(n)但他的空间复杂度是O(n),因为他需要消耗一个大小为O(n)的哈希表。代码:import java.util.*;class Solution { public int findRepeatNumber(int[] nums) { HashSet&
2021-06-24 10:53:41
56
原创 小白教你股票(无限次交易)
股票(无限次交易)题目描述:假定你知道某只股票每一天价格的变动。你最多可以同时持有一只股票。但你可以无限次的交易(买进和卖出均无手续费)。请设计一个函数,计算你所能获得的最大收益。示例1:输入:[5,4,3,2,1]输出:0说明:由于每天股票都在跌,因此不进行任何交易最优。最大收益为0。示例2:输入:[1,2,3,4,5]输出:4说明:第一天买进,最后一天卖出最优。中间的当天买进当天卖出不影响最终结果。最大收益为4。题目链接:股票(无限次交易)思路:这个题很简单,只需要数组临
2021-06-22 00:14:22
347
原创 小白教你数组中出现次数超过一半的数字
数组中出现次数超过一半的数字题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。你可以假设数组是非空的,并且给定的数组总是存在多数元素。1<=数组长度<=50000示例1:输入:[1,2,3,2,2,2,5,4,2]输出:2示例2:输入:[3,3,3,3,2,2,2]输出:3示例3:输入:[1]输出:1题目链接:数组中出现次
2021-06-22 00:07:25
107
1
原创 常用Markdown语法学习
Markdown学习建议使用Typora 下载地址二级标题就是## 加空格二级标题三级标题就是### 加空格三级标题其他的依次类推最多六级标题字体加粗:两边加**hello world!斜体:两边加*hello world!斜体加粗:两边加***hello world!删除线:两边加~~hello world!引用引用是加>这里是引用。分割线分割线是是三个减号—或者三个星号***图片英文感叹号 + 英文中括号 + 英文小括号超链接英文中括号
2021-06-21 23:40:01
68
原创 小白教你连续子数组的最大和
连续子数组的最大和题目描述:输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n).示例1:输入:[1,-2,3,10,-4,7,2,-5]输出:18说明:输入的数组为{1,-2,3,10,—4,7,2,一5},和最大的子数组为{3,10,一4,7,2},因此输出为该子数组的和 18。题目链接:连续子数组的最大和思路:这个是一个典型的动态规划问题,设置一个dp数组,数组中存放的均是到当前位置为止的连续子数组的
2021-06-21 00:42:01
173
原创 小白教你把数字翻译成字符串
把数字翻译成字符串题目描述:有一种将字母编码成数字的方式:‘a’->1, ‘b->2’, … , ‘z->26’。现在给一串数字,返回有多少种可能的译码结果示例1:输入:“12”返回:2说明:2种可能的译码结果(”ab” 或”l”)示例2:输入:“31717126241541717”返回:192说明:192种可能的译码结果思路:小白看到这个问题的时候并不知道如何下手,后来想到了dp,也就是动态规划。我们可不可以一个个增加字符,然后通过前面的组合数,推出以当前字符结
2021-06-21 00:14:21
665
原创 小白教你链表的奇偶重排
链表的奇偶重排题目描述:给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。注意是节点的编号而非节点的数值。示例1:输入:{1,2,3,4,5,6}输出:{1,3,5,2,4,6}说明:1->2->3->4->5->6->NULL重排后为1->3->5->2->4->6->NULL示例2:输入:{1,4,6,3,7}输出:{1,6,7,4,3}说明:1->4->
2021-06-20 23:43:55
719
2
原创 小白教你最长无重复子数组
最长无重复子数组题目描述:给定一个数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组示例:输入:[2,3,4,5]返回值:4说明:[2,3,4,5]是最长子数组思路:小白起初看这道题首先想到的是这个题需要使用set集合。然后小白先想到的是暴力求解,也就是把该数组的每一个位置的最长无重复子数组计算出来,然后返回最大值。我们直接来看一下代码。imp
2021-06-20 15:56:59
2725
2
原创 小白教你用两个栈实现队列
用两个栈实现队列题目描述:用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。示例1:输入:[“PSH1”,“PSH2”,“POP”,“POP”]返回:1,2解析:“PSH1”:代表将1插入队列尾部“PSH2”:代表将2插入队列尾部"POP“:代表删除一个元素,先进先出=>返回1"POP“:代表删除一个元素,先进先出=>返回2示例2:输入:[“P
2021-06-20 12:54:19
426
原创 小白教你斐波那契数列
斐波那契数列题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n≤39示例:输入:4返回值:3思路:首先我们必须知道斐波那契数列。斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)这道题与青蛙跳解题的题解题思路一样。青蛙跳阶梯这道题直接看代码,更容易理解。代码:public class Solution { pu
2021-06-18 22:29:36
198
原创 小白教你进制转换
进制转换题目描述:给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数示例:输入:7,2输出:“111”备注:M是32位整数,2<=N<=16.思路:我们先想一想我们10进制数是如何转换成其他进制的?比如10进制转2进制:我们手写一下十进制数7转换为二进制:我们再来看一下十进制数7转换为二进制现在我们知道我们的十进制转其他进制是由该十进制数除以转的进制数取余数,然后再用其商除以转的进制数取余数,知道商为0,然后从下到上依次读取的结果。我们再来考虑
2021-06-18 19:07:50
1070
原创 动态规划dp解决求路径
求路径题目描述:一个机器人在m×n大小的地图的左上角(起点)。机器人每次向下或向右移动。机器人要到达地图的右下角(终点)。可以有多少种不同的路径从起点走到终点?备注:m和n小于等于100,并保证计算结果在int范围内示例:输入:4,5输出:35思路:一看这道题与我之前写的易理解的矩阵的最小路径和求法有这异曲同工之处。用的都是动态规划(Dynamic Programming)思想。我们同样设置一个n * m的矩阵array,这个矩阵的每个单元格存储的就是到该位置的路径数。现在我们到
2021-06-18 12:11:17
181
原创 一看就会的判断链表中是否有环求法
判断链表中是否有环题目描述:判断给定的链表中是否有环。如果有环则返回true,否则返回false。你能给出空间复杂度的解法么?输入分为2部分,第一部分为链表,第二部分代表是否有环,然后回组成head头结点传入到函数里面。-1代表无环,其他的数字代表有环,这些参数解释仅仅是为了方便读者自测调试示例:输入:{3,2,0,-4},1返回值:true说明:第一部分{3,2,0,-4}代表一个链表,第二部分的1表示,-4到位置1,即-4->2存在一个链接,组成传入的head为一个带环的链表 ,返
2021-06-18 11:40:35
113
实验三—单元测试.doc
2021-06-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人