• leetcode刷题笔记六十一 旋转链表


    leetcode刷题笔记六十一 旋转链表

    源地址:61. 旋转链表

    问题描述:

    给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。

    示例 1:

    输入: 1->2->3->4->5->NULL, k = 2
    输出: 4->5->1->2->3->NULL
    解释:
    向右旋转 1 步: 5->1->2->3->4->NULL
    向右旋转 2 步: 4->5->1->2->3->NULL
    示例 2:

    输入: 0->1->2->NULL, k = 4
    输出: 2->0->1->NULL
    解释:
    向右旋转 1 步: 2->0->1->NULL
    向右旋转 2 步: 1->2->0->NULL
    向右旋转 3 步: 0->1->2->NULL
    向右旋转 4 步: 2->0->1->NULL

    代码补充:

    /**
     * Definition for singly-linked list.
     * class ListNode(var _x: Int = 0) {
     *   var next: ListNode = null
     *   var x: Int = _x
     * }
     */
    object Solution {
        def rotateRight(head: ListNode, k: Int): ListNode = {
            if(head == null) return null
            if(head.next == null) return head
            var old_tail = head
            var length = 1
            
            //旋转问题可通过闭合链表解决
            while(old_tail.next != null) {
                length += 1
                old_tail = old_tail.next
            }
            old_tail.next = head
    
            //确定断链位置,存在K>n与K<n情况 =》k = (k // n) * n + k % n
            var new_tail = head
            for(i <- 0 until length-k%length-1){
                new_tail = new_tail.next
            }
            var new_head = new_tail.next
            new_tail.next = null
    
            //println(length)
            return new_head
        }
    }
    
  • 相关阅读:
    数独
    canvas生成图片并保存到本地文件夹主要代码
    2048未完成
    Page
    IDEA新建MAVEN项目时速度缓慢
    Bug 记录(持续更新。。。)
    RecyclerBaseAdapter 和 OnItemClickListener
    AutoLoadRecyclerView
    BaseActionBarActivity
    Volley + OkHttp3 + Gson 组合的简单网络请求封装
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13298014.html
Copyright © 2020-2023  润新知