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 小时前
Java数据结构初阶——LinkedList
java·开发语言·数据结构
Elias不吃糖2 小时前
LeetCode每日一练(209, 167)
数据结构·c++·算法·leetcode
铁手飞鹰2 小时前
单链表(C语言,手撕)
数据结构·c++·算法·c·单链表
hweiyu002 小时前
数据结构:循环链表
数据结构·链表
野蛮人6号3 小时前
力扣热题100道前62道,内容和力扣官方稍有不同,记录了本人的一些独特的解法
数据结构·算法·leetcode
学困昇3 小时前
C++11中的lambda表达式详解
开发语言·数据结构·c++
代码王同学4 小时前
数据结构:栈
数据结构
Cx330❀5 小时前
深入理解 C++ 哈希:从概念到实战应用
开发语言·数据结构·c++·算法·面试·哈希算法·散列表
小龙报5 小时前
《算法通关指南:数据结构和算法篇 --- 链表相关算法题》--- 1. 队列安排,2.约瑟夫问题
c语言·数据结构·c++·算法·创业创新·学习方法·visual studio
晨非辰6 小时前
算法闯关日记 Episode :解锁链表新副本——破解「相交」迷局与「回文」谜题
运维·数据结构·c++·人工智能·后端·深度学习·神经网络