zoukankan      html  css  js  c++  java
  • Leetcode 25. Reverse Nodes in k-Group 以每组k个结点进行链表反转(链表)

    Leetcode 25. Reverse Nodes in k-Group 以每组k个结点进行链表反转(链表)

    题目描述

    已知一个链表,每次对k个节点进行反转,最后返回反转后的链表

    测试样例

    Input: k = 2, 1->2->3->4->5
    Output: 2->1->4->3->5
    
    
    Input: k = 3, 1->2->3->4->5
    Output: 3->2->1->4->5
    

    详细分析

    按照题目要求做就行了:比如k=2,首先[1->2->3->4->5]分组为[1->2],[3->4],[5],然后每组反转[2->1],[4->3],[5],最后输出反转后的链表[2->1->4->3->5]。

    算法实现

    class Solution {
    public:
        ListNode* reverseKGroup(ListNode* head, int k) {
            if(head==nullptr || k==1){
                return head;
            }
    
            ListNode * cur = head;
            while(true){
                partialReverse(cur,k);
            
                for(int i=0;i<k;i++){
                    cur=cur->next;
                    if(cur==nullptr){
                        return head;
                    }
                }
            }
        }
         
        // it's a closed interval
        void partialReverse(ListNode * start,int k){
            // 1->2
            // 1->2->3->4->5
            std::stack<int> vec;
            ListNode  * temp = start;
            for(int i=0;i<k;i++){
                vec.push(temp->val);
                temp = temp->next;
                if(i!=k-1 && temp==nullptr){
                    return;
                }
            }
        
            for(int i=0;i<k;i++){
                int val = vec.top();
                vec.pop();
                start->val = val;
                start=start->next;
            }
        }
    };
    
  • 相关阅读:
    MySQL0902作业(待巩固)
    Mysql之懵逼的一天
    sql查询语句详解
    MySQl语句总结
    0831练习作业(待纠正)
    0824MySQL
    Python数据分析——正则表达式
    Python数据分析——Beautiful Soup
    Python数据分析——requests使用
    Excle常用函数——Rank(统计排名)
  • 原文地址:https://www.cnblogs.com/ysherlock/p/9685265.html
Copyright © 2011-2022 走看看