LeetCode61.旋转链表

本题有两种做法:迭代和递归

本题的本质是:将链表中后k个结点变为前k个,然后将头结点连接到尾节点

迭代

考察知识:

  • 边界条件判断
  • 链表倒k结点寻找
  • Get思想:结环
java 复制代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode rotateRight(ListNode head, int k) {
        if (head == null) {
            return null;
        }
        ListNode p = head;
        int count = 1;
        while (p.next != null) {
            count++;
            p = p.next;
        }
        k = k % count;
  
        // 成环,寻找 k 结点
        p.next = head;
        for (int i = 0; i < count - k; i++) {
            p = p.next;
        }
        head = p.next;
        p.next = null;
        return head;
    }
}

递归

暂时没思考

相关推荐
阳明山水1 小时前
模型迭代实战:如何将准确率从75%提升到89%
数据结构·人工智能·算法·机器学习·微信·微信公众平台·微信开放平台
故事和你911 小时前
洛谷-【图论2-2】最短路4
开发语言·数据结构·c++·算法·动态规划·图论
承渊政道1 小时前
【贪心算法】(经典实战应用解析(四):分发饼干、最优除法、跳跃游戏、跳跃游戏Ⅱ、加油站)
数据结构·c++·算法·leetcode·贪心算法·动态规划·哈希算法
m0_629494731 小时前
LeetCode 热题 100-----24.回文链表
数据结构·算法·leetcode·链表
历程里程碑1 小时前
53 多路转接select
linux·开发语言·数据结构·数据库·c++·sql·排序算法
_深海凉_1 小时前
LeetCode热题100-二叉树展开为链表
算法·leetcode·链表
谙弆悕博士10 小时前
【附C源码】从零实现C语言堆数据结构:原理、实现与应用
c语言·数据结构·算法··数据结构与算法
Zhang~Ling16 小时前
深入解析C++list:从0到1实现一个完整的链表类
c++·链表·list
smj2302_7968265219 小时前
解决leetcode第3934题最短唯一子数组
数据结构·python·算法·leetcode
iiiiyu19 小时前
面向对象和集合编程题
java·开发语言·前端·数据结构·算法·编程语言