题目:给定一个单链表,交换两个相邻的节点,且返回交换之后的头节点 举例: Given 1->2->3->4, you should return the list as 2->1->4->3. 解题思路: 题目本身很简单,但是要注意一些细节: 1. 两对节点之间的连接 2. 如果只剩下一个节点,则不需要交换 代码如下: /** * Definition for singly-linked list. * public class ListNode { * int v
前言 以专题的形式更新刷题贴,欢迎跟我一起学习刷题.每道题会提供简单的解答. 题目描述 在单链表中删除倒数第 K 个节点 要求 如果链表的长度为 N, 时间复杂度达到 O(N), 额外空间复杂度达到 O(1) 难度 士 解答 删除的时候会出现三种情况: 1.不存在倒数第 K 个节点,此时不用删除 2.倒数第 K 个节点就是第一个节点 3.倒数第 K 个节点在第一个节点之后 所以我们可以用一个变量 sum 记录链表一共有多少个节点. 如果 num < K,则属于第一种情况. 如果 num == K
题目 给定一个单链表的头结点,实现一个调整单链表的函数,使得每K个节点之间逆序,如果最后不够K个节点一组,则不调整最后几个节点. 解答 使用栈结构 import java.util.Stack; public class Test{ static class Node{ public int val; public Node next; public Node(int val){ this.val=val; } } public static void main(String[] args) {
题目描述 给定一个单链表的表头节点head,实现一个调整单链表的函数,是的每k个节点之间逆序,如果最后不够k个节点一组,则不调整最后几个节点. 题解 内部函数reverse实现链表beg到end的翻转,以及与l和r的连接. 外部函数reverseKNodes实现区间的移动(即四个实参的更新),以及整个链表头节点的赋值. 时间复杂度O(n),额外空间复杂度O(1) 代码 public class Main { public static void main(String args[]) { Nod
Given a linked list, remove the n-th node from the end of list and return its head. Example: Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5. Note: Given n w
Given a list, rotate the list to the right by kplaces, where k is non-negative. For example:Given1->2->3->4->5->NULLand k =2,return4->5->1->2->3->NULL. /** * Definition for singly-linked list. * struct ListNode { * int val; *