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

    题目链接

    【题解】

    模拟就好。 就k个k个节点地翻转。 每个节点都把next域指向它前面那个节点 修改完之后把这个节点前面的那个节点的next域改成这一段的最后一个节点。 然后把这一段最左边的那个节点的next域修改为下一个区间的开始位置。

    【代码】

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* reverseKGroup(ListNode* head, int k) {
            ListNode *thead = new ListNode(0);
            thead->next = head;
            ListNode *temp = thead;
            int len = 0;
            while (temp->next!=NULL){
                temp = temp->next;
                len++;
            }
            temp = thead;
            for (int i = 1;i <= len/k;i++){
                ListNode *pre = temp;
                ListNode *p = temp,*tp = temp->next;//tp保存修改到的节点的next,因为next会变了
                for (int j = 1;j <= k;j++){
                    p = tp;
                    tp = p->next;
                    p->next = pre;//把当前节点的next域指向前面一个节点
                    pre = p;//保存pre节点。
                }
                temp->next->next=tp;//要修改的这段的最左边的节点next域改一下
                ListNode *t2 = temp->next;
                temp->next = pre;//这段要修改的区间的最左边的左边一个节点的next域指向这一段的最右边那个节点
                temp = t2;//指向这一段"新的最右边的节点"(也即原来的第一个节点)
            }
            return thead->next;
        }
    };
    
  • 相关阅读:
    openswitch db files
    openstack中虚拟机和其网络的联系方法 instance and network
    python操作db2和mysql ,ibm_db
    yum安装mariadb
    python 连接 db2
    db2操作 连接、备份、恢复db2
    su su
    linux 后台运行进程 fg bg ctrl+z nohup
    mysql 命令行
    IDEA-使用技巧
  • 原文地址:https://www.cnblogs.com/AWCXV/p/11827243.html
Copyright © 2011-2022 走看看