ICode9

精准搜索请尝试: 精确搜索
  • 【力扣 090】25. K 个一组翻转链表2022-05-30 21:31:57

    24. 两两交换链表中的节点 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

  • 【力扣 087】21. 合并两个有序链表2022-05-30 20:32:49

    21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。    示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2: 输入:l1 = [], l2 = []输出:[]示例 3: 输入:l1 = [], l2 = [0]输出:[0]  提示: 两个链表

  • 力扣简206 反转链表2022-05-30 13:34:17

    链表 递归 迭代 我现在认为迭代是每一步处理一个问题,形成一个比原来规模小但是处理方法相同的子问题,直至处理完。 看了下发现链表和树里的迭代 都用while做结束条件 整体放在一个大循环体内 一步一步处理 我下面列的这个方法应该也是迭代   自己做的就常规想法:直接取下来头,依次前

  • 牛客网高频算法题系列-BM5-合并k个已排序的链表2022-05-29 17:32:07

    牛客网高频算法题系列-BM5-合并k个已排序的链表 题目描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 原题目见:BM5 合并k个已排序的链表 解法一:分治法 分治法,可以将大问题分解成小问题,然后继续分解成最小的子问题并解决之。 具体处理过程如下,将k个链表分解

  • 【力扣 086】19. 删除链表的倒数第 N 个结点2022-05-29 17:02:39

    19. 删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 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]  提示: 链表中结点的数目为 sz1 <= sz <= 300 <=

  • 牛客网高频算法题系列-BM4-合并两个排序的链表2022-05-28 19:01:49

    牛客网高频算法题系列-BM4-合并两个排序的链表 题目描述 输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围: 0 <= n <= 1000,-1000 <= 节点值 <= 1000 要求:空间复杂度 O(1),时间复杂度 O(n) 原题目见:BM4 合并两个排序的链表 解

  • 链表内指定区间反转——牛客网2022-05-28 18:01:08

    描述 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n),空间复杂度 O(1)。例如:给出的链表为 1→2→3→4→5→NULL, m=2,n=4,返回 1→4→3→2→5→NULL. 数据范围: 链表长度 0<size≤1000,0<m≤n≤size,链表中每个节点的值满足 |val| <= 1000要求:时间复

  • 反转链表——牛客网2022-05-28 16:32:32

    描述 给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。   数据范围: 0≤n≤1000 要求:空间复杂度 O(1),时间复杂度 O(n) 。   如当输入链表{1,2,3}时, 经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。 以上转

  • LeetCode 0160 Intersection of Two Linked Lists2022-05-25 20:31:33

    原题传送门 1. 题目描述 2. Solution 1 1、思路分析 设len(A) = m, len(B) = n; A与B共同的部分len = s; m1 = m - s; n1 = n - s; 本题的关键是如何 处理 一般情况下: m1 != n1 方法一: 方案: 求和 鉴于 (m1 + s) + n1 = m + n1 = m1 + ( s + n1) = m1 + n 于是,以headA为出发点

  • leetcode - 234 回文链表2022-05-25 15:00:40

    给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。   /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { th

  • 快慢指针实现链表是否有环2022-05-23 22:01:46

    import java.util.List; /** * The type 判断链表是否有环 快慢指针. */ public class 判断链表是否有环_快慢指针 { /** * The type List node. */ public static class ListNode{ /** * The Data. */ public int data;

  • LeetCode 0147 Insertion Sort List2022-05-23 08:32:10

    原题传送门 1. 题目描述 2. Solution 1 1、思路分析 插入排序思想,把序列分成两部分,有序部分和待排序部分,初始时有序部分就1个元素,对于链表来说就是头结点。遍历链表把待排序部分的结点逐个插入到有序部分。 2、代码实现 package Q0199.Q0147InsertionSortList; import DataStru

  • LeetCode 0148 Sort List2022-05-23 08:31:25

    原题传送门 1. 题目描述 2. Solution 1 1、思路分析 题目要求时间复杂度为 O(nlongn),使用归并排序。 Step 1: 使用快慢针找中点,由中点把链表分成前后两部分。 Step 2: 分别对前后两部分递归调用归并排序。 Step 3: 对排序后的前后两部分进行合并。 2、代码实现 package Q0199.Q01

  • LeetCode 0143 Reorder List2022-05-23 08:00:20

    原题传送门 1. 题目描述 2. Solution 1 1、思路分析 Step 1: 找中点,把链表断成前后2部分 Step 2: 后半部分reverse Step 3: 同步遍历,把后半部分结点插入到前半部分 2、代码实现 package Q0199.Q0143ReorderList; import DataStructure.ListNode; public class Solution { /

  • LeetCode 0141 Linked List Cycle2022-05-22 07:31:47

    原题传送门 1. 题目描述 2. Solution 1 1、思路分析 用set 保存结点元素,若结点已存在则有环,遍历结束无重复则表示无环。 2、代码实现 package Q0199.Q0141LinkedListCycle; import DataStructure.ListNode; import java.util.HashSet; import java.util.Set; public class Sol

  • redis 设计与实现 读书笔记 - 链表2022-05-18 23:32:03

    1. 链表和链表节点的实现    listNode结构:      链接 list 结构:    

  • LeetCode 142.Linked List Cycle II2022-05-18 18:34:55

    LeetCode 142.Linked List Cycle II (环形链表 II) 题目 链接 https://leetcode.cn/problems/linked-list-cycle-ii/submissions/ 问题描述 给定一个链表的头节点  head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next

  • 8.链表操作的递归思维2022-05-17 21:34:50

    链表操作的递归思维 递归反转整个链表 public ListNode reverseList(ListNode head) { if(head == null || head.next == null){ return head; } ListNode last = reverseList(head.next); head.next.next = head; head.next

  • 7.单链表的六大解题套路2022-05-17 21:34:27

    单链表的六大解题套路 合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回,新链表是通过拼接给定的两个链表的所有节点组成的 public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode dummy = new ListNode(-1),p = dummy;//虚拟头结点 L

  • 23. 合并K个升序链表2022-05-16 22:32:37

    23. 合并K个升序链表 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。   示例 1: 输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[  1->4->5,  1->3->4,  2->6]将它们合并到一个有序链表中得

  • leetcode-0234 Palindrome Linked List2022-05-16 22:04:53

    Given the head of a singly linked list, return true if it is a palindrome. Example 1: Input: head = [1,2,2,1] Output: true Example 2: Input: head = [1,2] Output: false Constraints: The number of nodes in the list is in the range [1, 105]. 0 <= Node.va

  • leetcode-0206 reverse-linked-list2022-05-16 21:31:07

    Given the head of a singly linked list, reverse the list, and return the reversed list. Example 1: Input: head = [1,2,3,4,5] Output: [5,4,3,2,1] Example 2: Input: head = [1,2] Output: [2,1] Example 3: Input: head = [] Output: [] Constraints: The number o

  • leetcoce-160 相交链表2022-05-16 21:02:31

    Given the heads of two singly linked-lists headA and headB, return the node at which the two lists intersect. If the two linked lists have no intersection at all, return null. For example, the following two linked lists begin to intersect at node c1: The

  • 力扣简83 删除排序链表中的重复元素2022-05-16 15:00:26

    //注意这个ListNode类需要写在solution外面,要不然main里没法使用。而且main中类的新建要用 //自己写的: 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 //第一种思路的时候出错了 直接用l.next和l.next.next导致都混乱了 以后链

  • 21. 合并两个有序链表2022-05-15 14:34:29

    class Solution { public ListNode mergeTwoLists(ListNode list1, ListNode list2) { if(list1 == null){ return list2; } if(list2 == null){ return list1; } ListNode res = list1.val < list2.

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有