LeetCode 刷题【61. 旋转链表】

61. 旋转链表

自己做

解:截取拼接

cpp 复制代码
/**
 * 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) {
        ListNode *p = head, *q = head, *r = head;
        int l = 0;                          //链表长

        if(head == nullptr || head->next == nullptr)                 //没有移动空间
            return head;

        while(p != nullptr){                //计算链表长
            p = p -> next;
            l++;
        }
        p = head;                           //归位p

        //调整k
        k %= l;

        if(k == 0)                          //为0则不移动
            return head;

        for(int i = 0; i < k; i++)          //q、r包含k个元素
            r = r->next;

        if(k > 0)
            q = p->next;

        while(r->next != nullptr){        //使r指向尾部
            p = q;
            r = r->next;
            q = q->next;
        }

        p->next = nullptr;
        r->next = head;

        return q;

    }
};
相关推荐
.5481 分钟前
Two Pointers(双指针)
java·数据结构·算法
sali-tec3 分钟前
C# 基于OpenCv的视觉工作流-章58-相机标定
图像处理·人工智能·数码相机·opencv·算法·计算机视觉
承渊政道3 分钟前
【动态规划算法】(回文串问题解题框架与经典案例)
数据结构·c++·学习·算法·leetcode·动态规划·哈希算法
一水鉴天4 分钟前
同构异质三表总装体系确立与入表机制闭环验证 20260502(腾讯元宝)
人工智能·算法·机器学习
qyzm12 分钟前
Codeforces Round 1073 (Div. 2)
数据结构·python·算法
深邃-2 小时前
【数据结构与算法】-二叉树(2):实现顺序结构二叉树(堆的实现),向上调整算法,向下调整算法,堆排序,TOP-K问题
数据结构·算法·二叉树·排序算法·堆排序··top-k
We་ct5 小时前
LeetCode 5. 最长回文子串:DP + 中心扩展
前端·javascript·算法·leetcode·typescript
王老师青少年编程9 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【哈夫曼贪心】:合并果子
c++·算法·贪心·csp·信奥赛·哈夫曼贪心·合并果子
叼烟扛炮10 小时前
C++第二讲:类和对象(上)
数据结构·c++·算法·类和对象·struct·实例化
天疆说10 小时前
【哈密顿力学】深入解读航天器交会最优控制中的Hamilton函数
人工智能·算法·机器学习