• Leetcode-Rotate List


    Given a list, rotate the list to the right by k places, where k is non-negative.

    For example:
    Given 1->2->3->4->5->NULL and k = 2,
    return 4->5->1->2->3->NULL.

    Have you met this question in a real interview?
     
    Analysis:
    Assume the length of the list is len, we need to consider the situation that k > len which means to rotate the right k%n steps. Since rotate operation is a kind of circling operation. We first count the length of the list, and connect end to head to make the list as a circle. Then, we only need to move forward by len-k%len steps to reach the new end of the list. Now the next node is the new head.
     
    Solution:
     1 /**
     2  * Definition for singly-linked list.
     3  * public class ListNode {
     4  *     int val;
     5  *     ListNode next;
     6  *     ListNode(int x) {
     7  *         val = x;
     8  *         next = null;
     9  *     }
    10  * }
    11  */
    12 public class Solution {
    13     public ListNode rotateRight(ListNode head, int n) {
    14         if (head==null || head.next==null) return head;
    15     
    16         ListNode end = null;
    17         int len = 1;
    18         end = head;
    19         while (end.next!=null){
    20             end = end.next;
    21             len++;
    22         }
    23         end.next = head;
    24         int step = len - n%len;
    25         int index = 1;
    26         end = head;
    27         while (index<step){
    28             end = end.next;
    29             index++;
    30         }
    31         head = end.next;
    32         end.next = null;
    33         return head;              
    34     }
    35 }
  • 相关阅读:
    Setvlet基础(三) ServletContext
    Servlet基础(二) Servlet的生命周期
    Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解
    JS执行队列
    this指向问题
    发送短信案例
    倒计时
    2:定时器
    1_2:调整窗口大小事件 [ onresize ]
    1_1:页面加载事件 [ window.onload ]
  • 原文地址:https://www.cnblogs.com/lishiblog/p/4102796.html
Copyright © 2020-2023  润新知