0
点赞
收藏
分享

微信扫一扫

LeetCode61-旋转链表-模拟-链表-数据结构

半夜放水 2022-03-21 阅读 50
java后端

原题链接

在这里插入图片描述
在这里插入图片描述

Note:

先给K对链表长度取个余数,然后我们只需要把倒数第K个节点后面的移到链表前面就可以了

这道题就变成了找倒数第k个节点,用快慢指针就可以了,先让快的走K个然后在一起走,走到最后就找到了倒数第K个节点

代码如下:

/**
 * 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, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* rotateRight(ListNode* head, int k) {
        if(!head)   return head;
        ListNode *l = head, *r = head;
        int len = 1;
        while(l -> next){
            len ++;
            l = l -> next;
        }
        l = head, k = k % len;

        while(k --)
            r = r -> next;
        while(r -> next)
            l = l -> next, r = r -> next;
        r -> next = head;
        head = l -> next;
        l -> next = NULL;

        return head;
    }
};
举报

相关推荐

0 条评论