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;
    }
}

递归

暂时没思考

相关推荐
彧azz5 小时前
B-树学习总结:从结构特性到核心操作的系统复习
数据结构·笔记·b树·学习
All for pursuit.15 小时前
【动态规划-21】312.戳气球
数据结构·c++·算法·leetcode·动态规划
YSL07012419 小时前
贪吃蛇小游戏---古法编程
数据结构·游戏程序
y1su19 小时前
Leetcode 动态规划 模板
java·数据结构·算法·leetcode·动态规划
All for pursuit.20 小时前
【位运算-3】136.只出现一次的数字
数据结构·c++·算法·leetcode
suhan21 小时前
【数据结构】五、树:7.哈夫曼树、哈夫曼编码
数据结构·算法·排序算法
suhan21 小时前
【数据结构】五、树:6.平衡二叉树AVL
数据结构·算法·排序算法
suhan21 小时前
【数据结构】五、树:5.二叉排序树BST
数据结构·算法·排序算法
爱读书的小胖21 小时前
80. 删除有序数组中的重复项 II
java·数据结构·算法
小画家~1 天前
vue3 里面的 itemList.reduce
前端·数据结构·算法