文章分类 - leetcode-Linkedlist
摘要:解题思路: 寻找中间节点的问题,最好的方法就是一个快指针,一个慢指针; 细节:如果链表节点数是偶数,需要返回的是中间两个节点的第二个,可以通过快指针的状态区分链表节点是奇是偶/** * Definition for singly-linked list. * struct ListNode { *
阅读全文
摘要:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 Li
阅读全文
摘要:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 现有一个链表 -- head = [4,5,1,9],它可以表示为:4 -> 5 -> 1 -> 9 示例 1: 输入: head = [4,5,1,9], node = 5 输出: [4,1,9] 解释:
阅读全文
摘要:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 -- head = [4,5,1,9],它可以表示为: 4 -> 5 -> 1 -> 9示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链
阅读全文
摘要:我的LeetCode代码仓:https://github.com/617076674/LeetCode原题链接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list/description/题目描述:知识点:链表思路:用下一个节点
阅读全文
摘要:题目: 给定一个链表的头结点是head,请判断该链表是否为回文结构 例如: 1->2->1,返回true 1->2->2->1,返回true 1->2->3,返回false分析:在链表问题中,时间复杂度一般都是O(n)的,所以链表的优化一般在空间复杂度上的优化,在笔试和面试中,面对链表的问题,我们的
阅读全文
摘要:判断一个链表是否是回文链表回文链表1.找到中间结点2.中间位置之后的链表翻转上述两个的方法上两篇文章有写过3.将第一个链表与第二个链表一次向后遍历,比较1-2-3-2-11-2-3-1-2;if(A==null){ return false; } //找到中间节点 ListNode first=A;
阅读全文
摘要:思路1:找到中间节点然后把后面的翻转,(需要断开链表)然后比较和头节点开始的前段,最后要是后半段的游标可以走到最后说明是回文否则不是思路2:整体翻转比较思路3:借助一个栈存放前半段的元素,然后和后半段的比较 public boolean isPalindrome(ListNode head) { i
阅读全文
摘要:题目描述:Given a singly linked list, determine if it is a palindrome.Example 1:Input: 1->2Output: falseExample 2:Input: 1->2->2->1Output: trueFollow up:Co
阅读全文
摘要:1. 问题描述:给出一个链表,判断该链表是否为回文链表2. 解决的方法有两种,一种是将链表进行翻转(这里可以使用递归来解决)然后翻转后的后半部分与链表的前半部分进行比较来进行判断,第二种是将先找到链表的中间位置,这里可以使用快慢指针指针来进行,快指针一次走一步,慢指针一次走两步,那么等到快指针走到末
阅读全文
摘要:对单链表进行反转有迭代法和递归法两种。 1. 迭代法 迭代法从前往后遍历链表,定义三个指针分别指向相邻的三个结点,反转前两个结点,即让第二个结点指向第一个结点。然后依次往后移动指针,直到第二个结点为空结束,再处理链表头尾即可。 1.png 2.png 3.png 4.png 5.png /** *
阅读全文
摘要:对单链表进行反转有迭代法和递归法两种。 1. 迭代法 迭代法从前往后遍历链表,定义三个指针分别指向相邻的三个结点,反转前两个结点,即让第二个结点指向第一个结点。然后依次往后移动指针,直到第二个结点为空结束,再处理链表头尾即可。 2. 递归法 基线条件:空链或只有一个结点,直接返回头指针 递归条件:递
阅读全文
摘要:我的LeetCode代码仓:https://github.com/617076674/LeetCode原题链接:https://leetcode-cn.com/problems/reverse-linked-list/description/题目描述:知识点:链表思路一:递归地反转链表递归的终止条件
阅读全文
摘要:示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5方法一:暴力求解思路: 最容易想到的是遍历链表,将数据域为val的节点删除。但是,单链表一涉及删除,那么就得找到待删除节点的前驱节点,然而第一个节点没有前驱节点,当val恰为第一个节点的数据域时,
阅读全文
摘要:样例给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。 public ListNode removeElements(ListNode head, int val) { // Write your code here List
阅读全文
摘要:样例 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *
阅读全文
摘要:题目描述:删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5解题思路:声明一个指针指向第一个节点,利用这个指针来判断值是否相等,相等的话就删除,不相等的话就next,最后返回第一个节点的地址。代码如下:
阅读全文
摘要:文章目录 问题 解一 解二 解三 解四问题 删除链表中等于给定值 val 的所有节点。 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5给定的 ListNode:public static class ListNode { int val;
阅读全文
摘要:编写一个程序,找到两个单链表相交的起始节点。 例如,下面的两个链表: 在节点 c1 开始相交。 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。 解题思路 首先分别
阅读全文
摘要:这是一题常见的面试题,考察求职者对链表的理解,题目在leetcode上: Given a linked list, return the node where the cycle begins. If there is no cycle, return null. 首先来判断链表有没有环。看一个直观
阅读全文