标签:div 节点 str nod 否则 问题 leetcode for eve
这题上次交不知道出了什么问题,居然不出结果(当时停电了)。
早上起来重写了一下,发现并没有问题呀,直接只用STL大法,上list就完事了,要记住list的insert方法和earse方法都是有返回值的,返回的是一个指向链表元素的迭代器,insert指向的是插入节点,earse指向的是删除节点的下一个节点,否则是没有办法遍历的哦,各种bug。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: void reorderList(ListNode* head) { list<int> lst; int level=0; ListNode* tmp=head; while (tmp) { lst.push_back(tmp->val); level++; tmp=tmp->next; } if (level%2==1) { level/=2; } else { level=(level-2)/2; } list<int>::iterator it=lst.begin(); int cnt=0; while (it!=lst.end()) { if (cnt==level) break; it=lst.insert(++it,lst.back()); lst.pop_back(); it++; cnt++; } it=lst.begin(); while (it!=lst.end()) { head->val=*it; head=head->next; ++it; } } };
标签:div 节点 str nod 否则 问题 leetcode for eve
原文地址:https://www.cnblogs.com/xyqxyq/p/12235481.html