• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

LeetCodeOnlineJudge题目C#练习-ReverseNodesink-Group

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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 be changed.
Only constant memory is allowed.
For example,
Given this linked 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

 

 1         public static LinkedListNode ReverseNodesinkGroupOpt(LinkedListNode head, int k)
 2         {
 3             if (k <= 1)
 4                 return head;
 5 
 6             LinkedListNode fakehead = new LinkedListNode();
 7             fakehead.Next = head;
 8             LinkedListNode prev_tail = fakehead;
 9             LinkedListNode curr = head;
10             LinkedListNode next = head;
11             LinkedListNode tail = head;
12 
13             while (curr != null)
14             {
15                 for (int i = 1; i < k; i++)
16                 {
17                     curr = curr.Next;
18                     if (curr == null)
19                         return fakehead.Next;
20                     next = curr.Next;
21                 }
22 
23                 curr.Next = null;
24                 ReverseSignlyLinkedListIterative(tail);
25 
26                 prev_tail.Next = curr;
27                 prev_tail = tail;
28                 tail.Next = next;
29                 curr = next;
30                 tail = next;
31             }
32 
33             return fakehead.Next;
34         }

代码分析:

  虽然这题操作到head不是corner case,但是我还是加了一个fakehead在前面,模拟前面一个sub linked list的tail, prev_tail。 非常方便,如果k 大于linkedlist长度,返回的是fakehead.Next, 就是head。 如果k 小于 linkedlist 长度,fakehead.Next 将会指向第一个sub list的 head。

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【转】C#网络编程(异步传输字符串)发布时间:2022-07-13
下一篇:
c# 任意多个数,求最大值发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap