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

递归

暂时没思考

相关推荐
少许极端35 分钟前
算法奇妙屋(九)-栈
java·数据结构·算法·
无语子yyds2 小时前
C++双指针算法例题
数据结构·c++·算法
立志成为大牛的小牛2 小时前
数据结构——三十六、拓扑排序(王道408)
数据结构·学习·程序人生·考研·算法
懒羊羊不懒@2 小时前
JavaSe—List集合系列
java·开发语言·数据结构·人工智能·windows
10001hours7 小时前
初阶数据结构.1.顺序表.通讯录项目(只有源码和注释)
数据结构·算法
liebe1*114 小时前
C语言程序代码(四)
c语言·数据结构·算法
进击的圆儿14 小时前
递归专题4 - 网格DFS与回溯
数据结构·算法·递归回溯
寂静山林16 小时前
UVa 1597 Searching the Web
数据结构·算法
9523617 小时前
数据结构-顺序表
java·数据结构·学习
haofafa18 小时前
高精度加减法
java·数据结构·算法