反转链表 II

打印 上一主题 下一主题

主题 749|帖子 749|积分 2247



题解:
  1. /**
  2. * Definition for singly-linked list.
  3. * struct ListNode {
  4. *     int val;
  5. *     struct ListNode *next;
  6. * };
  7. */
  8. struct ListNode* reverseBetween(struct ListNode* head, int left, int right) {
  9.    struct ListNode* dummy=(struct ListNode*)malloc(sizeof(struct ListNode));
  10.    dummy->next=head;
  11.    struct ListNode *newHead,*temp,*steady=head,*last=dummy;
  12.    for(int i=0;i<left-1;i++){
  13.     steady=steady->next;
  14.     last=last->next;
  15.    }
  16.    newHead=steady;
  17.    temp=steady->next;
  18.    for(int i=0;i<right-left;i++){
  19.     steady->next=temp->next;
  20.     temp->next=newHead;
  21.     newHead=temp;
  22.     temp=steady->next;
  23.    }
  24.    last->next=newHead;
  25.    return dummy->next;
  26. }
复制代码
结果:时间复杂度O(N),空间复杂度O(1)


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

光之使者

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表