ICode9

精准搜索请尝试: 精确搜索
  • 链表内指定区间反转——牛客网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要求:时间复

  • Leetcode 234. 回文链表2022-04-22 16:03:52

    234. 回文链表 - 力扣(LeetCode) (leetcode-cn.com)       思路 1 用栈: 1.先将head从头到尾都压入栈。 2.依次从栈中取出节点,和head及其后续节点进行比较。 3.如果从前向后第x节点和从后向前第x节点的值不相同,则这个链表不是回文链表。 func isPalindrome(head *ListNode) bool

  • 【无标题】2022-03-21 13:59:38

    #include <stdio.h>  #include <stdlib.h> #include <conio.h> #include <windows.h> #define High 20 #define Width 30 int canvas[High][Width]={0}; void gotoxy(int x,int y) {     HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);     COORD

  • leetcode2181. 合并零之间的节点(mid)(281)2022-02-21 23:31:03

    合并零之间的节点 代码 力扣链接 代码 class Solution { public ListNode mergeNodes(ListNode head) { ListNode newHead = new ListNode(); ListNode t = head.next; ListNode t2 = newHead; int sum = 0; while (t != n

  • C递归逆置单链表2022-02-03 21:31:10

    1.先递归使头指针指向最后一个节点。 2.将最后一个节点的地址返回给新的头指针 “newhead” 。 3.然后依次重队尾指针开始,对里面的指针域进行逆置。 4.每次逆置完需要将当前节点的指针域置NULL。 5.最后返回新的头结点地址。 代码: LinkList InversionList(LinkList head) { if

  • L24两两交换链表中的结点(链表)2022-01-20 09:03:06

    描述 1->2->3->4 两两交换 2->1->4->3 解题思路 class Solution { public: ListNode* swapPairs(ListNode* head) { if(!head) return nullptr; ListNode* newhead=new ListNode(0); newhead->next=head; ListNode* pre=newh

  • lc24两两交换链表中的节点2022-01-06 23:31:18

    递归法。 官方题解非常好理解,head是每一组的第一个节点,newHead是每一组的第二个节点,思路是将head的next指向下一组的头节点,将newHead的next指向head,并且返回newHead,这样就完成了每一组两两相邻的交换。 var swapPairs = function(head) { if(head===null||head.next==nul

  • 力扣 203. 移除链表元素 难度:简单2021-12-20 18:04:10

    题目 给你一个链表的头节点 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输出:[]  提

  • LeetCode 234.回文链表(快慢指针+反转单链表)2021-11-13 20:34:55

    题目描述:来自LeetCode  思路:回文链表就是链表两边关于中间对称,那如果对称就是回文链表了,想要判断两边是否对称就要对两边一一比较,所以第一件事就是要找到中间结点,如何确定中间结点的位置?快慢指针呀!快指针每次走两步,慢指针每次走一步,当快指针都到链表最后的时候,慢指针走到中间

  • 反转链表----双指针2021-10-14 19:33:26

              1—>2—>3—>4—>5—>null                  null—>5—>4—>3—>2—>1 第一步:p=head.next        (newhead->null        head->1        p->2) 第二步:(改变指针方向)         head.next=newhead      (new

  • 2021-10-052021-10-05 23:31:31

    lc24 题目 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 输入:head = [1,2,3,4] 输出:[2,1,4,3] 示例 2: 输入:head = [] 输出:[] 示例 3: 输入:head = [1] 输出:[1] 提示:

  • leetcode-重排链表2021-09-08 11:02:36

    一.题目描述 给定一个单链表 L 的头节点 head ,单链表 L 表示为:  L0 → L1 → … → Ln-1 → Ln  请将其重新排列后变为: L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 https://leetcode-cn.com/prob

  • LeetCode-24-两两交换链表中的节点2021-08-14 12:02:13

    题目 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 输入:head = [1,2,3,4] 输出:[2,1,4,3] 思路 递归 终止条件:链表中只有一个元素或没有元素,则递归终止 代码实现 class Solution { public ListNo

  • 删除单链表元素-链表相关2021-06-26 17:31:07

    做链表提多画图,%99以上都要画图解决 虚拟借点 快慢指针 多指针 1. 输入 1-2-3-4-5-6-5-6;删除掉6的节点 思路:用到虚拟头节点 ,如果是删除的这 head = head.next; 如果不是 newTail.next = head; newTail = head; public ListNode removeElements(ListNode head, int val) {   

  • leetcode 82. 删除排序链表中的重复元素 II2021-03-25 21:01:46

    82. 删除排序链表中的重复元素 II /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, L

  • 单链表 冒泡排序2021-03-02 02:32:25

    先求长度,然后模拟冒泡排序的思想进行交换,小技巧,弄一个哨兵节点放在头结点前面,会方便很多。(链表的很多题都可以用这个小技巧来减少一些边界条件的处理) /** * linklist冒泡排序 * @param head * @return * @throws InterruptedException */ ListNode s

  • java 删除链表中所有的重复元素2021-02-04 21:31:17

    牛客题目链接 1. 题目考点 使用哑结点链表节点删除 2. 考点解析 public ListNode deleteDuplicates (ListNode head) { // write code here if (head == null) return null; ListNode newHead = new ListNode(0); newHead.next = head; ListNode p

  • 算法-链表-排序链表2021-01-26 13:01:31

    方法一 递归 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next

  • leetcode-206-OK2021-01-20 08:33:41

    剑指 24 address struct ListNode* reverseList(struct ListNode* head){ if(head ==NULL) return head; struct ListNode * newhead = head, *p; head = head->next; newhead->next = NULL; while(head){ p = head; head =

  • 剑指offer-25题-复杂链表复制2020-03-14 16:03:27

    题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)     python代码: # -*- coding:utf-8 -*- # class RandomListNode

  • 菜鸟系列 Golang 实战 Leetcode —— 面试题24. 反转链表2020-03-05 22:06:55

    定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。   示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL   限制: 0 <= 节点个数 <= 5000 题解: 采用原地反转的方式进行反转 这里假设存在旧链表head: 1->2->3->4->nil; 此时定义一个新链表 newHe

  • 反转链表(剑指offer_24)2019-12-31 13:53:04

    解题思路 递归 程序刚开始执行,if 语句失效,进入 else 语句,然后执行Node *newhead = reverseList(head->next);第二个结点的指针参数传入递归函数,一直到,最后一个结点的指针参数传入递归函数,if 语句有效head->next == NULL,返回当前的head 给 newhead 指针指向,如图: 其实在递归函数

  • Reverse Nodes in k-Group2019-06-23 19:52:00

    题目描述: Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is. You may not alter the values in the nodes, o

  • 反转链表2019-03-04 16:44:15

    public class Solution {    public ListNode ReverseList(ListNode head) {        if(head == null || head.next == null)//考虑特殊情况           return head;                ListNode pre = null; //三个指针推动        ListNode

  • java实现单链接的几种常用操作2019-02-27 18:41:21

    public class ListNode { public int value; public ListNode next; public ListNode(int value) { this.value = value; }} public class Mylist { /** * 头结点插入 */ public static void headInsert(ListNode head, ListNode newHead)

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

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

ICode9版权所有