题目 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。 示例 1: 输入:head
两数相加 官方题目地址:https://leetcode-cn.com/problems/add-two-numbers/ 点击查看代码 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可
两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0
链表专题 学前必看:论如何4个月高效刷满 500 题并形成长期记忆 203. 移除链表元素 思路: 1)删除头部相同的val 2)来到第一个不是val的位置 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0
点击查看代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* deleteDuplication(ListNode* head) { a
234. 回文链表 - 力扣(LeetCode) (leetcode-cn.com) 思路 1 用栈: 1.先将head从头到尾都压入栈。 2.依次从栈中取出节点,和head及其后续节点进行比较。 3.如果从前向后第x节点和从后向前第x节点的值不相同,则这个链表不是回文链表。 func isPalindrome(head *ListNode) bool
点击查看代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* reverseList(ListNode* head) { if (!he
#include<bits/stdc++.h> using namespace std; struct ListNode { int val; ListNode *next =NULL; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {} ListNode(int x, ListNode *next) : val(x), next(next) {
题目表述 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例: 归并排序 归并排序本质,递归加合并两个有序链表。 利用快慢指针,找到链表中点,以中点为边界,将链表拆分成为两个子链表。 对两个子链表分别进行排序。 将两个排序后的子链表合并,得到完整的排序
描述给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。 样例 1: 输入: list = null x = 0 输出: null 解释: 空链表本身满足要求 样例 2: 输入: list = 1->4->3->2->5->2->null x = 3 输出: 1->2->2->4->
单链表的中点 我们这就可以直接取前重点来比较嘛。 代码的话,要想验证回文,直接找到前中点的结点,然后反转后面的链表,再l1从开始比,l2从以反转的地方开始,直到比完l2就行了。 简单的一道题。 不过有些边界条件需要主要一下,以免出现空指针异常。 import java.util.*; /* * public cla
一、排序总结 排序算法大致可以分为两类:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序;如果需要使用外存,则称为外排序。 内排序有以下几类: 插入排序:直接插入、二分法插入、希尔 选择排序:直接选择、堆排序 交换排序:冒泡、快速 归并排序 基数排序 排序方法
21. 合并两个有序链表:https://leetcode-cn.com/problems/merge-two-sorted-lists/将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 class Solution { public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln-1 → Ln 请将其重新排列后变为:L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1:输入: head = [1,2,3,4]输出: [1,4,2,3]示例 2:输入: hea
给定两个 非空链表 l1和 l2 来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例1:输入:l1 = [7,2,4,3], l2 = [5,6,4]输出:[7,8,0,7]示例2:输入:l1 =
My Solution 1: class Solution { public ListNode mergeKLists(ListNode[] lists) { PriorityQueue<ListNode> queue = new PriorityQueue<>((a,b)-> a.val-b.val); for(ListNode node:lists){ while(node!=null){
LeetCode_206.反转链表:https://leetcode-cn.com/problems/reverse-linked-list/ 题目描述: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 思路1:迭代实现 就是从头开始遍历,在遍历链表的时候,将当前节点的next指针改为指向前一个节点。 由于节点没有引用
链接:剑指 Offer 25. 合并两个排序的链表 - 力扣(LeetCode) (leetcode-cn.com) 本题中要注意解决两个问题: 1.要合并的两个链表l1,l2可能为空,所以要对这两个链表为空的情况进行三种类型讨论:(1).都为空 (2).1空,2不空 (3).1不空,2空 2.一开始的头节点设置要先处理,找两链表的头节点值中
给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,po
package leetcode; public class demo_147 { public ListNode insertionSortList(ListNode head) { //最多有一个节点的链表直接返回 if(head==null||head.next==null) { return head; } ListNode dummyNode=new ListNode();
给你单链表的头节点,请你反转链表,并返回反转后的链表。 /*输入1,2,3,4,5采用递归,栈顶首先为5,5.next=null,返回,此时为1->2->3->4->5;栈顶为4,5.next=4,此时为1->2->3->4<->5,4.next=null,返回,此时为1->2->3->4<-5;栈顶为3,4.next=3,此时为1->2->3<->4<-5,3.next=null,返回,此时
原题传送门 1. 题目描述 2. Solution 1、思路分析 找到倒数第k个结点的前驱pre,把pre之前的所有结点从链表上取下,插入到头部。 如: 1 -> 2 -> 3 -> 4 -> 5 -> null, k = 2 倒数第2个结点为4,其前驱为3,把 4 -> 5 -> null 从链表上取下,插入到头部 4 -> 5 -> 1 -> 2 -> 3 -> null 2
剑指 Offer 22. 链表中倒数第k个节点 题意 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6,则这个链表的倒数第 3 个节点是值为 4 的
203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5] 示例 2: 输入:head = [], val = 1 输出:[] 示例 3: 输入:head = [7,7,7,7], val = 7
Source Given a linked list, remove the nth node from the end of list and return its head. Note The minimum number of nodes in list is n. Example Given linked list: 1->2->3->4->5->null, and n = 2. After removing the second node from the