首页 > 其他分享 >[LeetCode Hot 100] LeetCode25. K个一组翻转链表

[LeetCode Hot 100] LeetCode25. K个一组翻转链表

时间:2023-12-11 21:11:43浏览次数:30  
标签:ListNode val int next 链表 Hot LeetCode25 翻转

题目描述

思路:

  1. 判断链表中是否足够k个元素
  2. 再将这k个元素内部翻转一下
  3. 将前后端点连接的指针变化一下


方法一:

/**
 * 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 = next; }
 * }
 */
class Solution {
    public ListNode reverseKGroup(ListNode head, int k) {
        ListNode dummy = new ListNode(0, head);
        ListNode p = dummy;
        while(p != null) {
            ListNode q = p;
            // 判断后面是否有k个节点
            for (int i = 0; i < k && q != null; i ++) q = q.next;
            if (q == null) break;
            // 后面有k个节点
            ListNode a = p.next, b = a.next;
            // 翻转内部
            for (int i = 0; i < k - 1; i ++) {
                ListNode temp = b.next;
                b.next = a; 
                a = b;
                b = temp;
            }
            // 翻转外部
            ListNode c = p.next;
            p.next = a;
            c.next = b;
            p = c;
        }
        return dummy.next;
    }
}

标签:ListNode,val,int,next,链表,Hot,LeetCode25,翻转
From: https://www.cnblogs.com/keyongkang/p/17895554.html

相关文章

  • [持续更新][数据结构][算法]涵盖线性表、栈、链表、队列、图、动态规划、分治递归、回
    备考考点整理内部排序表格树的主要考点二叉树的常考紧紧抓住\(n_0=n_2+1\)\(n=n_0+n_1+n_2...n_m\)\(n=n_1+2*n_2+3*n_3...m*n_m\)+1哈夫曼树没有度为1的结点,也就是\(n_1=0\)完全二叉树常考总结最大岛屿问题(dfs模板)#include<iostream>#include<algorith......
  • 141. 环形链表
    1.题目介绍给你一个链表的头节点\(head\),判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪\(next\)指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数\(pos\)来表示链表尾连接到链表中的位置(索引从0开始)。注意:\(pos\)不作为参数进行......
  • Adobe Photoshop Elements 2024 v24.0 简体中文版 | 中文直装版
    下载:资源下载介绍:PhotoshopElements2024(简称PSE即PS简化版)是一款定位在数码摄影领域的全新的图像处理软件,该软件包括了专业版的大多数特性,只有少量的简化选项,提供了调整颜色和光线,去除划痕,修复旧照片,打开闭合的眼睛等实用功能,非常方便。除此之外,这款软件操作简单,使用方......
  • 234. 回文链表
    题目介绍给你一个单链表的头节点\(head\),请你判断该链表是否为回文链表。如果是,返回\(true\);否则,返回\(false\)。示例1:输入:head=[1,2,2,1]输出:true示例2:输入:head=[1,2]输出:false提示:链表中节点数目在范围\([1,10^{5}]\)内\(0<=Node.val<=9\)进......
  • Adobe Photoshop 2023最新激活(附图文教程)
    以前PS喜欢用这个,不过现在简单搞搞在手机上也能搞定。好久不用了,但偶尔需要用的时候还挺麻烦。有专业需求的小伙伴拿走不谢。介绍Photoshop软件是一个非常强大的数字图像处理和编辑软件,具有直观易用的用户界面,各种图像编辑和处理工具,各种图层和蒙版功能,各种滤镜和插件。无论是初学......
  • 代码 测试用例 测试结果 测试结果 24. 两两交换链表中的节点
    给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例1:输入:head=[1,2,3,4]输出:[2,1,4,3]示例2:输入:head=[]输出:[]示例3:输入:head=[1]输出:[1] 提示:链表中节点的数目在范围 [0,100] 内......
  • 160.相交链表
    1.题目介绍给你两个单链表的头节点 \(headA\)和\(headB\),请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回\(null\)。图示两个链表在节点\(c1\)开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构......
  • [LeetCode Hot 100] LeetCode155. 最小栈
    题目描述思路一:使用辅助栈定义一个[数据栈]来支持push、pop、top操作定义一个[辅助栈],其栈顶为当前的最小值,以支持常数时间复杂度的getMin操作思路二:使用ArrayDeque栈元素中除了保存当前值之外,额外保存当前最小值使用静态内部类方法一:对应思路一classMinStack{......
  • 【JavaSE】数据结构(栈、队列、数组、链表)
    什么是数据结构?数据结构是计算机底层存储、组织数据的方式,是指数据相互之间是什么方式排列在一起的常见的数据结构栈、队列、数组、链表二叉树、二叉查找树、平衡二叉树、红黑树哈希表栈特点:先进后出队列特点:先进先出数组特点:有索引,内存连续优点:查询速度快O(1)缺点:增......
  • [LeetCode Hot 100] LeetCode20. 有效的括号
    题目描述思路:栈的经典应用。注意下遇到右括号的代码,即边界情况://遇到右括号,则进行括号匹配if(!stack.isEmpty()&&stack.peek()==match(c)){ //如果匹配则直接弹出栈顶元素 stack.pop();}else{ //如果不匹配则直接返回false returnfalse;}方法一:class......