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.

    这道题其实思路很简单就是好多细节考虑不到导致编译好几次才成功

    尤其是测试的时候考虑K是整个链表长度的整数倍的时候应该怎么处理

    看到这道题我的思路首先是利用一次遍历求链表中倒数第K个节点,然后记录倒数第K+1个节点,然后再指针变化就可以了

    但是出错!原因是如果K正好是head,这时候K之前的那个节点没法处理

    下面附上代码:

    public ListNode rotateRight(ListNode head, int k) {
            if (head == null) {
    			return null;
    		}
           ListNode temp = head;
    		int len = 0;
    		while(temp!=null){
    			temp = temp.next;
    			len++;
    		}
    		k = k%len;
    		
    		if (head.next == null || k == 0) {
    			return head;
    		}
    		ListNode pointer = FindKToTail(head, k);
    		
    		if (pointer != null && pointer.next != null) {
    			ListNode pointer1 = pointer.next;
    			ListNode result = pointer1;
    			pointer.next = null;
    			while (pointer1.next != null) {
    				pointer1 = pointer1.next;
    			}
    			pointer1.next = head;
    			return result;
    		} else {
    			return null;
    		}
    
    	}
    
    	public ListNode FindKToTail(ListNode head, int k) {
    		if (head == null || k == 0) {
    			return null;
    		}
    		ListNode fast = head;
    		for (int i = 0; i < k; i++) {
    			if (fast.next != null) {
    				fast = fast.next;
    			} else {
    				return head;
    			}
    		}
    		ListNode slow = head;
    		
    		while (fast.next != null) {
    			fast = fast.next;
    			
    			slow = slow.next;
    		}
    		return slow;
    	}
    
  • 相关阅读:
    Tomcat造成404
    ajax缺少@ResponseBody注解前台404,业务可以运行
    几种常见的Runtime Exception
    SQL注入通俗讲解
    MYSQL数据库导入大数据量sql文件失败的解决方案
    css选择器
    http端口
    基础算法之最大子列求和问题
    基础算法之链表逆序
    Prolog&Epilog
  • 原文地址:https://www.cnblogs.com/gracyandjohn/p/4437622.html
Copyright © 2011-2022 走看看