61. Rotate List
来源:互联网 发布:如何用c语言编写小程序 编辑:程序博客网 时间:2024/06/05 20:11
这道题是翻转链表,就是倒着数k个node,从那开始到结尾和之前那部分对调。
快慢指针。解决这种链表,要倒着数的问题。
快指针先走k步,然后两个指针一起走,当快指针走到末尾时,慢指针的下一个位置是新的顺序的头结点,这样就可以旋转链表了。但是这道题注意两个细节,一个是head有可能是空,直接返回空。还有k有可能是大于n的,所以要先遍历链表,得到链表长度,然后如果k大于n,那么取k等于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 NULL; int n = 0; ListNode *node = head; while(node){ n++; node = node->next; } if(k >= n) k = k % n; ListNode* slow = head, *fast = head; for(int i = 0; i < k; ++i){ fast = fast->next; } if(fast == NULL) return head; while(fast->next){ fast = fast->next; slow = slow->next; } fast->next = head; fast = slow->next; slow->next = NULL; return fast; }};
阅读全文
0 0
- [LeetCode]61.Rotate List
- 61. Rotate List
- LeetCode --- 61. Rotate List
- [Leetcode] 61. Rotate List
- 61. Rotate List
- [leetcode] 61.Rotate List
- [leetcode] 61. Rotate List
- 61. Rotate List
- leetcode 61. Rotate List
- LeetCode 61. Rotate List
- [leetcode] 61. Rotate List
- 61. Rotate List
- 61. Rotate List
- 61. Rotate List LeetCode
- leetcode 61. Rotate List
- 61. Rotate List
- 61. Rotate List
- 61. Rotate List
- 给自己的优盘做个保护,再也不怕病毒了!
- 奇葩说:VR因晕眩问题注定永远失败?
- 行业已成“红海”的今天,新兴无人机众筹项目都在做什么?
- Centos使用最小化安装后如何安装DeskTop
- 【LeetCode】Construct Binary Tree From Inorder And Postorder Traversal 中序遍历和后序遍历树构造二叉树
- 61. Rotate List
- C语言标准库函数qsort排序的介绍与使用
- 第五篇 elasticsearch中document的核心元数据
- 错误: 无法取消引用float
- 赛可达最新杀毒软件测试:电脑管家成唯一入前五的中国杀软
- 主打非生态!酷开是来搅局互联网电视的吗?
- 《Java编程思想》中为什么可以直接用方法名调用静态方法?
- OPTION 子句 (Transact-SQL)
- 想要健康的十大习惯