leetcode之92. Reverse Linked List II(C++读错题版本,交换一个链表中指定的两个位置上的元素)
来源:互联网 发布:微信营销游戏源码 编辑:程序博客网 时间:2024/06/03 03:31
Reverse a linked list from position m to n. Do it in-place and in one-pass.
For example:
Given 1->2->3->4->5->NULL, m = 2 and n = 4,
return 1->4->3->2->5->NULL.
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.
*****************************我是分割线************************
真的是没有读懂题啊,看例题真的是以为两个位置交换啊,英语不好好坑爹啊,程序写的也是乱,凑合看吧,意思还是这个意思,嘻嘻~~~~~~~~
******************************我是另外一条分割线****************
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseBetween(ListNode* head, int m, int n){ if(!head || !head->next ||m==n) return head; ListNode *p=head; ListNode *q=head; ListNode *pm; ListNode *pn; ListNode *pmp; ListNode *pnp; if(!head->next->next) { ListNode *second=head->next; second->next=head; head->next=nullptr; return second; } else if(1==m && 2==n) { ListNode *seconds=head->next; ListNode *third=head->next->next; seconds->next=head; head->next=third; return seconds; } else if(1==m) { int j=0; ListNode *pnp1; ListNode *pm1=head; ListNode *pn1; ListNode *p1=head; while(p1) { if(j==n-2) { pnp1=p1; pn1=p1->next; break; } else ; p1=p1->next; j++; } ListNode *temp1=pm1->next; pm1->next=pn1->next; pn1->next=temp1; if(pnp1==temp1) { pnp1->next=pm1; return pn1; } else { pnp1->next=pm1; return pn1; } } else { int i=0; while(p) { if(i==m-2) { pmp=p; pm=p->next; } else if(i==n-2) { pnp=p; pn=p->next; break; } else ; p=p->next; i++; }//i 就是链表的长度 pmp->next=pn; ListNode *temp=pm->next; pm->next=pn->next; if(temp==pn) { pn->next=pm; return head; } else { pn->next=temp; pnp->next=pm; } return head; }}};
下一篇更正确版本,改不对宝宝不睡了!
0 0
- leetcode之92. Reverse Linked List II(C++读错题版本,交换一个链表中指定的两个位置上的元素)
- leetcode解题之237# Delete Node in a Linked List Java版 (删除链表中指定的结点)
- 【C++】【LeetCode】92. Reverse Linked List II
- LeetCode 92. Reverse Linked List II(翻转链表)
- leetcode Remove Linked List Elements 移除链表中指定元素
- Remove Linked List Elements 删除链表中指定元素
- 删除链表中指定位置的元素
- 闲话链表(二) leetcode 之 Reverse Linked List II
- 删除一个数组中指定位置的元素
- 从leetcode 92.reverse-linked-list-ii 对链表的认识
- 92.leetcode Reverse Linked List II(medium)[链表逆序]
- leetcode 92. Reverse Linked List II 反转链表
- LeetCode 92 Reverse Linked List II(翻转链表II)(Linked List)(*)
- LeetCode | Reverse Linked List II(翻转链表2)
- LeetCode-Reverse Linked List II(反转链表)
- LeetCode(Reverse Linked List II) 反转指定位置之间的节点
- Reverse Linked List II 翻转指定位置的节点
- [C++]LeetCode: 62 Reverse Linked List II
- IBM Intel Microsoft 计算机发展史 RISC和CISC
- Python格式化字符
- Annotation介绍@interface
- C# 托管资源和非托管资源
- javascript在html中的加载顺序
- leetcode之92. Reverse Linked List II(C++读错题版本,交换一个链表中指定的两个位置上的元素)
- iOS UICollectionView
- HTML FileReader
- Codeforces 623B Array GCD(枚举情况+dp)
- 论文阅读: ECCV2016 Chained Predictions Using Convolutional Neural Networks
- Vijos P1428 贪婪格尔曼
- C#控制台基础 抽象类中可以写虚方法,但是没用。因为该方法不能被调用
- VASP不同版本的安装方法
- 2016 acm香港网络赛 D.Curious Cupid[莫队算法]