首页 > TAG信息列表 > dummyHead

链表插入排序

func insertionSortList(head *ListNode) *ListNode { if head == nil { return nil } dummyHead := &ListNode{Next: head} lastSorted, curr := head, head.Next for curr != nil { if lastSorted.Val <= curr.Val { lastSorted = lastSorted.Next } else { prev :=

Leetcode19. 删除链表的倒数第 N 个结点(中等)双指针

struct ListNode* removeNthFromEnd(struct ListNode* head, int n){ struct ListNode* dummyHead = (struct ListNode*)malloc(sizeof(struct ListNode)); dummyHead->next = head; struct ListNode*slow=dummyHead,*fast=dummyHead; for

删除链表的倒数第N个结点(双指针法)

题目链接:19. 删除链表的倒数第 N 个结点 思路:本题为双指针的经典应用,如果要删除倒数第n个结点,则先让fast移动n步,然后同时移动fast和slow,直至fast指向链表的最后一个结点,此时slow->next指向的结点即为要删除的结点。 /** * Definition for singly-linked list. * struct Lis

LeetCode147.对链表进行插入排序(Python)

题目思路: 可以理解为利用两个指针,一个对整个链表进行遍历,另一个在已经遍历过的线段寻找插入点。(建议画图便于理解) 利用 class Solution: def insertionSortList(self, head: ListNode) -> ListNode: # 首先判断链表是否为空 if not head: retur

0019-leetcode算法实现之删除链表倒数第n个节点-remove-nth-node-from-end-of-list-python&golang实现

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2], n = 1 输出:[1] 提示: 链表中结点的数目为 sz 1 <= sz <=

删除排序链表中的重复元素 II

力扣https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/ 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。 返回同样按升序排列的结果链表。   var deleteDupl

实现双向链表(带傀儡节点)

引言 在之前的博文中,我简单的向大家分享了一些链表相关的知识及一些面试题,如果感兴趣的老铁可以去瞧瞧,今天做题遇到要实现带傀儡节点的双向链表,做了下,之前的单向链表中我们也遇到要设置傀儡节点(哨兵节点的题),今天我们就来看一下实现双向链表(带傀儡节点)。 基本思路 对于链表

力扣-24题(Java)-链表节点交换

题目链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs/ 题目如下: 思路: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } *

C# 实现 Leetcode203. 移除链表元素

创建一个虚拟头结点  从虚拟头结点去遍历   public class Solution { public ListNode RemoveElements(ListNode head, int val) { ListNode dummyHead = new ListNode(-1); dummyHead.next = head; ListNode prev = dummyHead; wh

4.链表和递归

《算法与数据结构体系课》-liuyubobobo 课程笔记 链表和递归 上一章,我们从底层实现了一个单链表的数据结构。并且根据这个链表,实现了栈和队列两种数据结构。 但是提到链表,我们其实还有一个非常重要的话题:递归。 链表天然地拥有递归的性质,不过链表是线性的,太过简单,我们使用循环的方

2021-03-08 | 445. 两数相加 II

1. 题目描述 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 进阶: 如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节

25. K 个一组翻转链表

题目概述 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 例: 输入:head = [1,2,3,4,5], k = 2 输出:[2,1,4,3,5] 输入:head = [1,2,3,4,5], k = 3

24. 两两交换链表中的节点

24. 两两交换链表中的节点 24. 两两交换链表中的节点方法一:递归方法二:迭代 24. 两两交换链表中的节点 方法一:递归 class Solution { public ListNode swapPairs(ListNode head) { if(head == null || head.next == null) { return head;

LeetCode - 删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 方法一,使用数组辅助 class ListNode:

Remove Nth Node From End of List

题目描述: Given a linked list, remove the nth node from the end of list and return its head. For 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

206. 反转链表

反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? class Solution { public ListNode reverseList(ListNode head) { ListNode dummyHead = new ListNode(-1);

LeetCode 第92题 反转链表 II

反转链表 II反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL 1 class Solution97 { 2 3 public ListNode reverseBetween(ListNode head, int m, int n) { 4