leetcode61. 旋转链表(java)

这篇具有很好参考价值的文章主要介绍了leetcode61. 旋转链表(java)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

leetcode61. 旋转链表

Leetcode链接:
https://leetcode.cn/problems/rotate-list/

题目描述

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

示例1:
leetcode61. 旋转链表(java)
输入:head = [1,2,3,4,5], k = 2
输出:[4,5,1,2,3]

示例2:
leetcode61. 旋转链表(java)
输入:head = [0,1,2], k = 4
输出:[2,0,1]

提示:
链表中节点的数目在范围 [0, 500] 内
-100 <= Node.val <= 100
0 <= k <= 2 * 109

解题思路

这题需要把链表变成一个环。然后从k的位置断开就是旋转后的链表。
步骤如下:
1.先用一个辅助指针,把链表走到最后一个节点,
并且记录链表的长度。将尾节点和头节点连接在一起。
2.如果k 是链表长度的整数倍。那么翻转后,还是原链表,直接返回头节点
3.如果不是整数倍,int ans =n - k % n;(n代表链表的长度。)
4.再走ans 步,从这里断开链表,返回下一个节点,就完成了。

代码演示

/**
 * 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(k == 0 || head == null || head.next == null){
            return head;
        }
        //记录链表的长度
        int n = 1;
        ListNode cur = head;
        while(cur.next != null){
            n++;
            cur = cur.next;
        }

       int ans = n - k % n;
       //
       if(ans == n){
           return head;
       }
       cur.next = head;
       while(ans > 0){
           cur = cur.next;
           ans--;
       }    
       ListNode last = cur.next;
       cur.next = null;
       return last;
    }
}

链表专题

删除排序链表中的重复元素

-递归实现翻转链表

leetcode24. 两两交换链表中的节点文章来源地址https://www.toymoban.com/news/detail-478516.html

到了这里,关于leetcode61. 旋转链表(java)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【算法题】61. 旋转链表

    给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 1: 输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 示例 2: 输入:head = [0,1,2], k = 4 输出:[2,0,1] 提示: 链表中节点的数目在范围 [0, 500] 内 -100 = Node.val = 100 0 = k = 2 * 10^9

    2024年01月19日
    浏览(38)
  • 61. 旋转链表 86. 分隔链表 |面试经典题

    题目 :给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 题目链接 :61. 旋转链表 截断拼接即可 题目 :给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留

    2024年01月22日
    浏览(68)
  • 【Leetcode】重排链表、旋转链表、反转链表||

    目录 💡重排链表 题目描述 方法一: 方法二: 💡旋转链表 题目描述 方法: 💡反转链表|| 题目描述 方法: 💡总结 给定一个单链表  L   的头节点  head  ,单链表  L  表示为:  L0 → L1 → … → Ln-1 → Ln  请将其重新排列后变为: L0 → Ln → L1 → Ln-1 → L2 → 

    2024年02月03日
    浏览(85)
  • LeetCode-旋转链表问题

    给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 思路: 这里向右移动k个位置,相当于从链表的倒数第k个节点处断开,之后再将断开的两个子链表按照相反顺序链接。断开倒数第k个节点需要倒数第k+1个节点地址,链接两个子链表需要最后一个节

    2024年02月04日
    浏览(75)
  • LeetCode 热题 100(四):48. 旋转图像、240. 搜索二维矩阵 II、234. 回文链表

    题目要求:就是一个顺时针的旋转过程。  思路:观察矩阵,得出翻转前第i行的第J个元素  等于  翻转后倒数第i列的第J个元素,举例说明,第1行第2个元素为“2”,翻转后到了 倒数第1列的第2个元素。说白了只需要针对翻转前的第i行和翻转后的倒数第i列 代码: 题目要求

    2024年02月11日
    浏览(36)
  • leetcode--环形链表.找到入环节点(java)

    LeetCode 142:环形链表II 可以在这里测试 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表

    2024年02月07日
    浏览(31)
  • HOT 100(61~80)【LeetCode】

    2023-7-2 10:25:40 HOT 100(1~20)【LeetCode】 HOT 100(21~40)【LeetCode】 HOT 100(41~60)【LeetCode】 课程表 提示 中等 1.6K 相关企业 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisite

    2024年02月12日
    浏览(35)
  • leetcode--删除链表的倒数第N个节点(java)

    19 删除链表的倒数第N个节点 -可以测试 题目描述: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点 示例1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例2: 输入:head = [1], n = 1 输出:[] 示例3: 输入:head = [1,2], n = 1 输出:[1] 提示: 链表中结点的数目为

    2024年02月07日
    浏览(49)
  • 【LeetCode算法系列题解】第61~65题

    【题目描述】 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 【示例1】 【示例2】 【提示】 链表中节点的数目在范围 [0, 500] 内 − 100 ≤ N o d e . v a l ≤ 100 -100le Node.valle 100 − 100 ≤ N o d e . v a l ≤ 100 0 ≤ k ≤ 2 ∗ 1 0 9 0le kle 2 * 10^9 0 ≤ k ≤

    2024年02月09日
    浏览(35)
  • LeetCode //C - 61. Rotate List

    Given the head of a linked list, rotate the list to the right by k places.   Example 1: Input: head = [1,2,3,4,5], k = 2 Output: [4,5,1,2,3] Example 2: Input: head = [0,1,2], k = 4 Output: [2,0,1] Constraints: The number of nodes in the list is in the range [0, 500]. -100 = Node.val = 100 0 = k = 2 ∗ 1 0 9 0 = k = 2 * 10^9 0 = k = 2 ∗ 1 0 9 From: LeetCo

    2024年02月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包