ICode9

精准搜索请尝试: 精确搜索
  • 剑指Offer-第12天 双指针(简单)2022-05-15 00:03:04

    第一题 题目链接:https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/ 个人题解:创建一个虚拟头节点,遍历,如果碰到小的元素接上去即可。 代码: class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { auto dummy=new Li

  • 2022-5-13 链表2022-05-13 09:33:20

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

  • 2022-5-12 链表2022-05-12 21:01:47

    876. 链表的中间结点 给定一个头结点为 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * Lis

  • leetcode-0083 remove duplicates from sorted list2022-05-09 21:31:30

    Given the head of a sorted linked list, delete all duplicates such that each element appears only once. Return the linked list sorted as well. Example 1: Input: head = [1,1,2] Output: [1,2] Example 2: Input: head = [1,1,2,3,3] Output: [1,2,3] Constraints

  • LeetCode每日一练【23】2022-05-04 18:31:07

    Merge K Sorted Lists 我的解题 介绍 差强人意的解法, 虽然勉强可以接受, 但是 400ms 左右的运行时间和 70 mb 的内存使用, 还是让人很难接受! 思路 参考: https://www.cnblogs.com/mapodoufu/p/16218278.html 同二链表排序的方法相似, 我们可以将二维数组链表看成多个二链表排序

  • 234. 回文链表2022-05-04 12:03:47

    package leetcode; public class demo_234 { public boolean isPalindrome(ListNode head) { if(head==null||head.next==null) {return true;} ListNode slow=head; ListNode fast=head.next.next; //标记原链表长度为奇数还是偶数

  • 141. 环形链表(快慢指针)2022-05-04 02:01:17

    1. 环形链表 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递

  • LeetCode每日一练【21】2022-05-03 14:34:43

    Merge Two Sorted Lists 我的解法 我的第一次提交 介绍 ..... 思路 构建链表: listNode(存放返回结果), listnode1(链表1), listnode2(链表2) 创建三个指针分别指向三个链表: let [pointer, pointer1, pointer2] = [listnode, listnode1.next, listnode2.next]; 依次比较lis

  • LeetCode每日一练【19】2022-05-03 09:02:02

    Remove Nth From From End Of List 我的解法 第一次提交 介绍 别看我, 看我干啥? 看代码啊! 思路 构建链表: new ListNode(0, arr) 创建两个指针: x_pointer(遍历链表), y_pointer(遍历链表 - 删除节点) 代码 /* * @Author: fox * @Date: 2022-05-03 07:11:41 * @LastEditors

  • 链表专题2022-05-02 21:00:37

    1、反转链表 思路:新建一个temp节点,双指针后移 /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode ReverseList(ListNode head) { if(head=

  • 【leetcode】25. K 个一组翻转链表2022-05-02 13:33:28

    题目:25. K 个一组翻转链表 - 力扣(LeetCode) (leetcode-cn.com)   思路: 递归本质: 将问题划分成子问题,而子问题与问题有相同的算法逻辑和解决方案; 本题目可以划分成先以head开始的前k个节点进行反转,得到第k个节点后的结点b 剩下链表中的节点同样采取上述的操作,把结点b当作head,再对

  • 【leetcode】92. 反转链表 II2022-05-01 23:33:57

    题目:92. 反转链表 II - 力扣(LeetCode) (leetcode-cn.com) 思路1: 递归 将链表中的left到right的部分反转,可以转换成以left为头节点head的前n(right-left+1)个结点的逆转 先思考将链表的前n个结点逆转的算法: ListNode successor = null; public ListNode reverseN(ListNode head

  • 【链表】【leetCode高频】: 19. 删除链表的倒数第 N 个结点2022-05-01 23:01:22

    1、题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。       2、算法分析 知识补充: 。      分析: 题目要求是删除链表中倒数第N个结点。可以使用两个指针slow,fast。 重点是找到被删除结点的前一个结点。 ①定义一个头结点指向head ②slow指向头结点

  • 【leetcode】160. 相交链表2022-05-01 20:01:31

    题目: 160. 相交链表 - 力扣(LeetCode) (leetcode-cn.com) 思路: 要找到相交链表的第一个结点。可以先让链表A和链表B走相等的距离,指针第一次相遇时就是相交相交链表的第一个结点; 注意: 指针1走完A链表,再走B链表;指针2走完B链表,再走A链表; 代码如下: /** * Definition for singly-linke

  • 【leetcode】链表的中间结点2022-05-01 19:04:52

    题目:876. 链表的中间结点 - 力扣(LeetCode) (leetcode-cn.com)   思路:   该题可以使用快慢指针的方法,根据慢指针走1步,快指针走2步的情况,   a.如果链表的节点个数为奇数,则有一个中间节点:   可以推出当快指针fast到达链表最后一个节点的时候(fast != null且fast.next == null),则慢指

  • 【leetcode】合并K个升序链表2022-04-30 17:32:51

    题目:23. 合并K个升序链表 - 力扣(LeetCode) (leetcode-cn.com) 思路: 合并k个链表和合并2个链表的逻辑类似,都是迭代以此比较两个链表上的元素,取出小的节点加入合并的链表。 但是合并k个链表难点在于如何获得k链表的最小值,此时引入一个优先级队列,其实是一个最小堆,就可以每次获得k个节

  • 利用快慢指针寻找链表中点2022-04-30 13:32:05

    快慢指针的原理类似于时钟里的分针时针,在链表中,二者同时从head首节点出发,快指针一次走两步,慢指针一次走一步,当快指针走到终点时,慢指针所在位置即为链表的中点。 代码: class ListNode{  int val;  ListNode next;}ListNode getMidNode(ListNode head){ ListNode slow = he

  • [Leetcode]21. 合并两个有序链表2022-04-29 21:33:02

    题目链接:21. 合并两个有序链表 - 力扣(LeetCode) (leetcode-cn.com) 思路: 有两个有序链表l1和l2,这里的l1和l2是分别指向这两个有序链表的,按着顺序迭代两个链表。   无虚拟节点的情况: 确定合并链表的头节点指针head这里要对两个链表的情况进行划分,有四种情况: 1. 若l1==null && l2 =

  • LeetCode 203. Remove Linked List Elements2022-04-29 21:31:06

    LeetCode 203. Remove Linked List Elements (移除链表元素) 题目 链接 https://leetcode-cn.com/problems/remove-linked-list-elements/ 问题描述 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 示例 输入:head

  • LeetCode 0086 Partition List2022-04-28 07:31:12

    原题传送门 1. 题目描述 2. Solution 1 1、思路分析 新建两个头结点,left存放小于x的结点,right存放大于等于x的结点值。从head遍历原始链表,结点值小于x挂left,大于等于x挂right,遍历结束后把right挂到left后面。 2、代码实现 package Q0099.Q0086PartitionList; import DataStructu

  • 2.两数相加2022-04-27 17:00:19

    1.类似于双指针 func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode { if l1==nil{ return l2 } if l2==nil{ return l1 } ans:=&ListNode{Val:0} //用于作为返回结果 p:=ans //用于作为后续索引指针 add:=0 for l1!

  • 刷题笔记3.数组、链表、跳表2022-04-27 16:35:17

    数组、链表、跳表 Java 源码分析(ArrayList) Linked List 的标准实现代码 [Linked List 示例代码](http://www.cs.cmu.edu/~adamchik/15-121/lectures/Linked Lists/code/LinkedList.java) Java 源码分析(LinkedList) LRU Cache - Linked list: LRU 缓存机制 Redis - Skip List:跳跃表

  • 剑指offer(24)2022-04-27 10:03:32

    剑指offer(24) 剑指 Offer 24. 反转链表 难度简单430 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 对于链表的处理,很多时候加上一个虚拟头节点就可以减少许

  • LeetCode 0082 Remove Duplicates from Sorted List II2022-04-27 08:00:38

    原题传送门 1. 题目描述 2. Solution 1 1、思路分析 递归写法。 1> 递归出口。遍历到链表的末尾,直接返回当前遍历结点。 2> 规模递减。如果当前结点值与其后继结点值不相等,处理后继结点,把处理结果挂到当前结点后面。如果当前结点与其后继结点相等,遍历链表,找到不重复的结点,处理不

  • LeetCode 0083 Remove Duplicates from Sorted List2022-04-27 08:00:17

    原题传送门 1. 题目描述 2. Solution 1 1、思路分析 迭代法。 2、代码实现 package Q0099.Q0083RemoveDuplicatesfromSortedList; import DataStructure.ListNode; public class Solution2 { public ListNode deleteDuplicates(ListNode head) { if (head == null

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

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

ICode9版权所有