LeetCode 61 — Rotate List(C++ Java Python)
2014-02-24 22:11
671 查看
题目:http://oj.leetcode.com/problems/rotate-list/
Given a list, rotate the list to the right by k places, where k is non-negative.
For example:
Given
return
题目翻译:
给定一个链表,向右旋转k个位置,其中k是非负的。
例如:
给定1->2->3->4->5->NULL和k = 2,
返回4->5->1->2->3->NULL。
分析:
把链表连成环,再在特定的位置断开。注意k可能大于链表的长度。
C++实现:
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->NULLand k =
2,
return
4->5->1->2->3->NULL.
题目翻译:
给定一个链表,向右旋转k个位置,其中k是非负的。
例如:
给定1->2->3->4->5->NULL和k = 2,
返回4->5->1->2->3->NULL。
分析:
把链表连成环,再在特定的位置断开。注意k可能大于链表的长度。
C++实现:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *rotateRight(ListNode *head, int k) { if(head == NULL || k == 0) { return head; } int length = 1; ListNode *node = head; while(node->next != NULL) { ++length; node = node->next; } node->next = head; int m = k % length; for(int i = 0; i < length - m; ++i) { node = node->next; } head = node->next; node->next = NULL; return head; } };Java实现:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode rotateRight(ListNode head, int n) { if (head == null || n == 0) { return head; } int length = 1; ListNode node = head; while (node.next != null) { ++length; node = node.next; } node.next = head; int m = n % length; for (int i = 0; i < length - m; ++i) { node = node.next; } head = node.next; node.next = null; return head; } }Python实现:
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: # @param head, a ListNode # @param k, an integer # @return a ListNode def rotateRight(self, head, k): if head == None or k == 0: return head length = 1 node = head while node.next != None: length += 1 node = node.next m = k % length node.next = head for i in range(length - m): node = node.next head = node.next node.next = None return head感谢阅读,欢迎评论!
相关文章推荐
- LeetCode 141 — Linked List Cycle(C++ Java Python)
- (java)leetcode-61:Rotate List
- LeetCode 147 — Insertion Sort List(C++ Java Python)
- [leetcode]61. Rotate List@Java解题报告
- LeetCode 142 — Linked List Cycle II(C++ Java Python)
- LeetCode 83 — Remove Duplicates from Sorted List(C++ Java Python)
- 【LEETCODE】61- Rotate List [Python]
- LeetCode 61. Rotate List(Python详解及实现)
- LeetCode 19 — Remove Nth Node From End of List(C++ Java Python)
- 【leetcode】61. Rotate List【java】
- LeetCode 61. Rotate List---Python实现
- [Leetcode]61. Rotate List @python
- leetcode解题61. Rotate List java版(旋转链表)
- LeetCode 148 — Sort List(C++ Java Python)
- leetcode 【Rotate List 】python 实现
- C++ STL@ list 应用 (leetcode: Rotate Array)
- LeetCode 61. Rotate List(循环右移单链表)
- Leetcode_remove-nth-node-from-end-of-list(c++ and python version)
- LeetCode 14 — Longest Common Prefix(C++ Java Python)
- LeetCode 64 — Minimum Path Sum(C++ Java Python)