数据结构和算法
数据结构和算法
全部文章
题解
读书笔记(1)
归档
标签
去牛客网
登录
/
注册
数据结构和算法的博客
关注微信公众号“数据结构和算法”,每日一题
全部文章
/ 题解
(共11篇)
【数据结构和算法】四指针解决
来自专栏
四指针解决 在算法中双指针我们经常听过,但四指针还是比较少的,四指针顾名思义就是使用4个指针来解决。 这题是让把节点值小于x的节点都放到前面,最简单的一种解决方式就是把原链表的节点分隔为两个链表,其中一个链表节点的值都是小于x的,另一个链表节点的值都是大于或等于x的,最后再把这两个链表合并即可。这里...
java
链表
2021-08-03
2
986
【数据结构和算法】NC3 链表中环的入口结点
来自专栏
之前讲过《NC4 判断链表中是否有环》 只需要判断是否有环即可,而今天这题如果有环还要找出环的入口,这题我们可以使用两种方式来解决 1,快慢指针解决 在前面我们提到过快慢指针,判断是否有环。如果有环,在来找环的入口。如果没环直接返回null即可,我们假设是有环的,那么会有两种情况,一种是O型,一...
java
链表
有环
2021-06-30
44
1986
【数据结构和算法】双指针,递归等3种解决方式
来自专栏
1,非递归解决 这题让删除链表的倒数第n个节点,首先最容易想到的就是先求出链表的长度length,然后就可以找到要删除链表的前一个结点,让他的前一个结点指向要删除结点的下一个结点即可,这里就以示例为例画个图看一下再来看下代码 public ListNode removeNthFromEnd(...
递归
java
链表
双指针
2021-04-02
10
1393
【数据结构和算法】判断回文链表,图文详解
来自专栏
1,反转后半部分链表 这题是让判断链表是否是回文链表,所谓的回文链表就是以链表中间为中心点两边对称。我们常见的有判断一个字符串是否是回文字符串,这个比较简单,可以使用两个指针,一个最左边一个最右边,两个指针同时往中间靠,判断所指的字符是否相等。 但这题判断的是链表,因为这里是单向链表,只能从前往...
java
链表
栈
2021-03-21
50
2159
【数据结构和算法】集合,双指针等3种解决方式
来自专栏
1,通过集合set解决 做这题最容易想到的一种解决方式就是先把第一个链表的节点全部存放到集合set中,然后遍历第二个链表的每一个节点,判断在集合set中是否存在,如果存在就直接返回这个存在的结点。如果遍历完了,在集合set中还没找到,说明他们没有相交,直接返回null即可,原理比较简单,直接看下代码...
链表
双指针
2021-03-19
9
925
【数据结构和算法】快慢指针以及集合两种方式解决
来自专栏
这题可以参照《判断链表中是否有环》 ,答案我之前写过《链表是否有环3种方式解决》 ,这两道题有非常大的相似地方。 1,快慢指针解决 在前面我们提到过快慢指针,先判断是否有环,如果有环,在来找环的入口。我们假设是有环的,那么会有两种情况,我们来画个图看一下 1,环很大 假如他们在相遇点相遇了,那么慢指...
链表
双指针
2021-03-19
10
2409
【数据结构和算法】非递归和递归两种方式解决
来自专栏
1,非递归解决 每k个一组进行反转,如果不够k个就不需要反转,关于链表的反转,不会的可以看下《432,剑指 Offer-反转链表的3种方式》 。最简单的一种方式就是把链表每k个分成一组,然后反转这每一组的节点,接着在把他们串起来即可。 public ListNode reverseKGrou...
java
反转
链表
2021-03-18
51
2331
【数据结构和算法】合并链表,递归和非递归两种解决方式
来自专栏
1,非递归解决 这题比较简单,因为链表是升序的,我们只需要遍历每个链表的头,比较一下哪个小就把哪个链表的头拿出来放到新的链表中,一直这样循环,直到有一个链表为空,然后我们再把另一个不为空的链表挂到新的链表中。我们就以3→4→7→9和2→5→6两个链表来画个图看一下是怎么合并的。 publi...
合并
链表
2020-12-21
14
1010
【数据结构和算法】链表是否有环3种方式解决
来自专栏
1,快慢指针解决 判断链表是否有环应该是老生常谈的一个话题了,最简单的一种方式就是快慢指针,慢指针针每次走一步,快指针每次走两步,如果相遇就说明有环,如果有一个为空说明没有环。代码比较简单 public boolean hasCycle(ListNode head) { if (head =...
链表
有环
2020-12-21
223
5784
【数据结构和算法】3种方式解决
来自专栏
1,使用栈解决 链表的反转是老生常谈的一个问题了,同时也是面试中常考的一道题。最简单的一种方式就是使用栈,因为栈是先进后出的。实现原理就是把链表节点一个个入栈,当全部入栈完之后再一个个出栈,出栈的时候在把出栈的结点串成一个新的链表。原理如下 import java.util.Stack; publ...
java
反转
链表
2020-12-21
816
54597
首页
上一页
1
2
下一页
末页