zoukankan      html  css  js  c++  java
  • 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.

    原题链接:https://oj.leetcode.com/problems/rotate-list/

    得到链表长度。链表指向尾节点,将链表首尾相连,向右k%len。得到结果链表的尾节点。

    public class RotateList {
    	public static void main(String[] args) {
    		ListNode head = new ListNode(1);
    		ListNode head1 = new ListNode(2);
    		ListNode head2 = new ListNode(3);
    		ListNode head3 = new ListNode(4);
    		ListNode head4 = new ListNode(5);
    		head.next = head1;
    		head1.next = head2;
    		head2.next = head3;
    		head3.next = head4;
    //		while(head != null){
    //			System.out.println(head.val);
    //			head = head.next;
    //		}
    		ListNode ln = new RotateList().rotateRight(head, 2);
    		while(ln != null){
    			System.out.println(ln.val);
    			ln = ln.next;
    		}
    	}
    	public ListNode rotateRight(ListNode head, int n) {
    		if(head == null)
    			return head;
    		int len = 1;
    		ListNode tmp = head;
    		while(tmp.next != null){
    			tmp = tmp.next;
    			len ++;
    		}
    		tmp.next = head;
    		n %= len;
    		int step = len - n;
    		while(step > 0){
    			tmp = tmp.next;
    			step --;
    		}
    		head = tmp.next;
    		tmp.next = null;
    		return head;
    	}
    
    }
    // Definition for singly-linked list.
     class ListNode {
    	int val;
    	ListNode next;
    
    	ListNode(int x) {
    		val = x;
    		next = null;
    	}
    }
    




  • 相关阅读:
    codeforces 587B
    codeforces 552E
    算法竞赛模板 字典树
    算法竞赛模板 二叉树
    算法竞赛模板 图形面积计算
    TZOJ 1545 Hurdles of 110m(动态规划)
    算法竞赛模板 判断线段相交
    算法竞赛模板 折线分割平面
    TZOJ 3005 Triangle(判断点是否在三角形内+卡精度)
    算法竞赛模板 KMP
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5083747.html
Copyright © 2011-2022 走看看