[leetcode]25. Reverse Nodes in k-Group
来源:互联网 发布:java构造器怎么理解 编辑:程序博客网 时间:2024/06/03 21:00
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.
If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.
You may not alter the values in the nodes, only nodes itself may changed.
Only constant memory is allowed.
For example,
Given this listed list: 1->2->3->4->5
For k=2, you should return 2->1->4->3->5
For k=3, you should return 3->2->1->4->5
虽然这个题难度是hard,不过沿用k=2,即leetcode24题的思路,一次过
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* reverseKGroup(struct ListNode* head, int k) { if((head==NULL) ||(k==1)) return head; struct ListNode* node; struct ListNode* node1; int tmp[k]; node = head; int flag = 1; while(flag==1) { node1 = node; for(int i=0; i<k; i++) { if(node1==NULL) flag = 0; else { tmp[i]=node1->val; node1 = node1->next; } } if(flag==1) { for(int i=0; i<k; i++) { node->val = tmp[k-1-i]; node = node->next; } } } return head;}
这个题看晚上的代码,有一个很好的思路,通过栈进行转换,别人的代码如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *reverseKGroup(ListNode *head, int k) { ListNode* newhead = new ListNode(-1); ListNode* tail = newhead; ListNode* begin = head; ListNode* end = begin; while(true) { int count = k; while(count && end != NULL) { end = end->next; count --; } if(count == 0) {//reverse from [begin, end) stack<ListNode*> s; while(begin != end) { s.push(begin); begin = begin->next; } while(!s.empty()) { ListNode* top = s.top(); s.pop(); tail->next = top; tail = tail->next; } } else {//leave out tail->next = begin; break; } } return newhead->next; }};
0 0
- [LeetCode]25.Reverse Nodes in k-Group
- LeetCode --- 25. Reverse Nodes in k-Group
- LeetCode 25.Reverse Nodes in k-Group
- [Leetcode] 25. Reverse Nodes in k-Group
- 【LeetCode】25.Reverse Nodes in k-Group
- [leetcode] 25.Reverse Nodes in k-Group
- Leetcode-25.Reverse Nodes in k-Group
- leetcode 25. Reverse Nodes in k-Group
- leetcode 25. Reverse Nodes in k-Group
- leetcode 25. Reverse Nodes in k-Group
- leetcode 25. Reverse Nodes in k-Group
- leetCode 25. Reverse Nodes in k-Group
- Leetcode 25. Reverse Nodes in k-Group
- leetcode:25. Reverse Nodes in k-Group
- LeetCode 25. Reverse Nodes in k-Group
- 【leetcode】25. Reverse Nodes in k-Group
- leetcode 25. Reverse Nodes in k-Group
- leetcode 25. Reverse Nodes in k-Group
- 改错 字符串倒序
- Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音
- Island Perimeter
- java进行异常处理时的注意事项
- 移动前端开发之viewport的深入理解(总结)
- [leetcode]25. Reverse Nodes in k-Group
- RabbitMQ学习(二)---------请求许可
- Mybaits利用resultMap实现一对多
- 数据中心传回的信息对源节点进行控制(一)
- 怎么使用easy_ui搭建后台ui--初试牛刀(上)登陆页面的搭建
- 详解Photoshop中标尺工具和参考线的使用方法
- QML RowLayout
- iOS 长按手势响应执行两次解决办法
- querySelectorAll 和 getElementByTagName()等方法的区别