leetCode61. 旋转链表

leetCode61. 旋转链表

题目思路:见如图所示

代码展示

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) {
        if(!head) return head;

        int n; // 找出链表长度
        ListNode* tail; // 找到尾结点
        for(auto p = head; p; p = p->next){
            tail = p;
            n++;
        }

        // k的值可能大于n,我们要去取有效的
        k %= n;
        if(k == 0) return head;

        auto p = head;
        for(int i = 0; i < n - k - 1; i++) p = p->next;

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

        return head;
    }
};
相关推荐
梅茜Mercy1 小时前
数据结构:链表(经典算法例题)详解
数据结构·链表
我要学编程(ಥ_ಥ)2 小时前
一文详解“二叉树中的深搜“在算法中的应用
java·数据结构·算法·leetcode·深度优先
chenziang13 小时前
leetcode hot100 对称二叉树
算法·leetcode·职场和发展
我要出家当道士5 小时前
Nginx单向链表 ngx_list_t
数据结构·nginx·链表·c
林的快手5 小时前
209.长度最小的子数组
java·数据结构·数据库·python·算法·leetcode
Dream it possible!8 小时前
LeetCode 热题 100_LRU 缓存(35_146_中等_C++)(哈希表 + 双向链表)(构造函数声明+初始化列表=进行变量初始化和赋值)
c++·leetcode·缓存
chenziang111 小时前
leetcode hot100
算法·leetcode·职场和发展
木向13 小时前
leetcode22:括号问题
开发语言·c++·leetcode
蹉跎x14 小时前
力扣1358. 包含所有三种字符的子字符串数目
数据结构·算法·leetcode·职场和发展
坊钰14 小时前
【Java 数据结构】移除链表元素
java·开发语言·数据结构·学习·链表