LeetCode Rotate List

来源:互联网 发布:js实现购物车 编辑:程序博客网 时间:2024/05/17 09:35

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可能是大于n的,所以要先进行取模处理,然后就是:把链表头尾相连,然后就可以翻转了。

/** * 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) return head;ListNode *tail = head;int n = 1;while (tail->next != NULL) {n++;tail = tail->next;}k %= n;if (k == 0) return head;int len = n - k;ListNode *cur = head;while (--len) {cur = cur->next;}ListNode *start = cur->next;cur->next = NULL;tail->next = head;return start;    }};


0 0
原创粉丝点击