![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
顾青山X
这个作者很懒,什么都没留下…
展开
-
剑指 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 · 519 阅读 · 0 评论 -
剑指 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 · 190 阅读 · 0 评论 -
剑指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 · 192 阅读 · 0 评论 -
剑指Offer 06 从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。链表翻转一般采用栈的方法,依次入栈后依次出栈。 采用递归方法 计数后倒序输入数组中Java中的LinkedList类型最适合作为栈的结构使用,相较于继承Collection接口的Stack能保证线程同步。注意:Java中输出数组元素不能直接print(数组名),因为“数组名”.toString方法打印出的是数组地址而非数组。而是需要print(Arrays.toString(数组名))方法。...原创 2022-01-19 17:19:40 · 367 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。如果使用String.split()方法,会产生无法通过测试用例2 “ ” 的情况。通过编写测试样例研究,发现在split()方法中,“ 1”将会分为两个部分,即null + “1”“1 ”将会分为一个部分,即1“ ”将会分为0个部分所以如果后者字符串为null,则后者字符串不会被分出来;若前者字符串为null且后者字符串不为null,则后者字符串和前者字符串都会被分离出来。因此,在本题中,可以采用tocha原创 2022-01-18 20:51:31 · 144 阅读 · 0 评论