zoukankan      html  css  js  c++  java
  • 25. K 个一组翻转链表

    给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。

    k 是一个正整数,它的值小于或等于链表的长度。

    如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

    示例 :

    给定这个链表:1->2->3->4->5

    当 k = 2 时,应当返回: 2->1->4->3->5

    当 k = 3 时,应当返回: 3->2->1->4->5

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/reverse-nodes-in-k-group
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    //之前是用c写的迭代法,好久之前了,现在又做到这题,用递归的方法解决这个问题,找出问题的核心

    //1.返回值是什么------>是头节点,是翻转以后每个子链的头节点,找出这个头节点返回

    //2.每个子链在做什么,也就是递归的每一层在干什么,是要翻转这条子链

    //3.递归到底的结束条件是什么,是count==0,

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode reverseKGroup(ListNode head, int k) {
            if(k==1)
                return head;
            ListNode p=head;
            int sum=0;
            while(p!=null)      //找出一共有多少个节点,计算出需要我们去翻转几条子链,也就是将链表去分割
            {
                sum+=1;
                p=p.next;
            }
            int count=sum/k;
            return reverse(head,count,k);
            
        }
        public ListNode reverse(ListNode head,int count,int k)
        {
            if(count==0)
                return head;
            ListNode pre=head;
            ListNode cur=head.next;
            ListNode next=cur.next;
            for(int i=0;i<k-1;i++)
            {
                cur.next=pre;
                pre=cur;
                cur=next;
                if(next!=null)
                    next=next.next;
            }
            head.next=reverse(cur,--count,k);    //这里要注意一点,这个count要减去1,不能用count--,这样的话,count是减1了,但是递归下去的变量并没有减1,还是原来的值
            return pre;
        }
    }

  • 相关阅读:
    python 类 专有方法
    当请求进入Nginx后,每个HTTP执行阶段的作用
    jquery 监听不起效果的小问题汇总
    shell 脚本中 while 只执行一次
    LVS (Linux虚拟服务器)模型及算法
    TCP 通信时序及状态变迁
    Golang 谷歌搜索api 实现搜索引擎(前端 bootstrap + jquery)
    Golang 简单 http 代理转发
    Golang 简单静态web服务器
    Golang TCP转发到指定地址
  • 原文地址:https://www.cnblogs.com/cold-windy/p/11366097.html
Copyright © 2011-2022 走看看