自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 剑指 Offer 24. 反转链表

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。方法一:利用栈的思想,将所有value值压入栈后再取出,并创建一条新的链表来接收他。在此过程中,学习到了“JAVA中并无指针”的概念,Java中的所有变量名都是对对象的引用。可以参考:(26条消息) Java与指针_空谷回响的编码史-CSDN博客_java指针import java.util.LinkedList;public class 剑指24_反转链表 { public class ListNode{

2022-01-22 15:09:18 508

原创 剑指 Offer 30. 包含 min 函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。由于要求调用min的时间复杂度是O(1),所以不能使用遍历寻找,要在输入数组时就要进行监控。因此考虑在输入时设一个int变量min来记录栈中的最小值。然而如此做,就会在pop时遇到上一个min值未记录的问题。因此考虑设一个min栈,来存放每一次push后栈中的最小值。要特别注意栈空,因为如果在栈空时调用removelast()方法会抛出异常。

2022-01-21 17:12:17 180

原创 剑指Offer 09 用两个栈实现队列

两种方法:利用LinkedList的addLast() 和 removreFirst() 方法实现队列 利用两个Stack类型变量A,B进行pop和push操作。入队:直接push进第一个Stack中就行出队:方法一:将A中所有元素置入B中,pop,再将B中所有元素置入A中方法二:①若B不为空,直接pop②否则,若A为空,则AB皆空,返回-1③否则,将A置入B中,pop相较于方法一,方法二可以避免很多次“将B中元素置入A中”的操作,复杂度大大降低。...

2022-01-21 10:23:26 180

原创 剑指Offer 06 从尾到头打印链表

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。链表翻转一般采用栈的方法,依次入栈后依次出栈。 采用递归方法 计数后倒序输入数组中Java中的LinkedList类型最适合作为栈的结构使用,相较于继承Collection接口的Stack能保证线程同步。注意:Java中输出数组元素不能直接print(数组名),因为“数组名”.toString方法打印出的是数组地址而非数组。而是需要print(Arrays.toString(数组名))方法。...

2022-01-19 17:19:40 357

原创 剑指 Offer 05. 替换空格

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。如果使用String.split()方法,会产生无法通过测试用例2 “ ” 的情况。通过编写测试样例研究,发现在split()方法中,“ 1”将会分为两个部分,即null + “1”“1 ”将会分为一个部分,即1“ ”将会分为0个部分所以如果后者字符串为null,则后者字符串不会被分出来;若前者字符串为null且后者字符串不为null,则后者字符串和前者字符串都会被分离出来。因此,在本题中,可以采用tocha

2022-01-18 20:51:31 133

原创 数据挖掘-Apriori算法原理

Apriori算法主要用于数据集的关联分析,找出数据集中的有趣的关联规则。例如“啤酒和尿布”。该算法主要分为两个步骤:找出频繁项集、找出关联规则。一个具体的例子:在寻找频繁项集之前我们先引入两个小概念:支持度和可信度。支持度是指某个集合在所有记录中出现的频率,计算方法为出现次数/总记录数;可信度是为了验证某种关联规则是否存在而设立的。例如我们猜想“尿布--->葡萄酒”这一规则,那么该规则的可信度就是(尿布,葡萄酒)的支持度/(尿布)的支持度,或者两者的次数之商。接下来.

2021-10-11 15:27:00 448

原创 析构函数的理解

析构函数是与构造函数相对应的一个函数。构造函数用来对类对象进行初始化,而析构函数则是用来销毁对象。析构函数的函数体往往是空,代表其不进行任何操作。使用new语句为对象申请空间之后,若在之后的程序中使用delete函数将空间回收,则会自动调用析构函数。在这里,笔者产生了一个疑惑:明明只用delete函数就可以将对象的空间释放,为什么要在设计语言之初要多创造这样一个析构函数?难道仅仅只是为了与构造函数对称?经过查阅,我找到了舒夜无痕前辈的关于析构函数的学习心得,其中较为严谨的推理并阐述了显式析构函数与隐

2021-08-18 11:20:21 1559

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除