zoukankan      html  css  js  c++  java
  • leetcode 143. 重排链表

    这题上次交不知道出了什么问题,居然不出结果(当时停电了)。

    早上起来重写了一下,发现并没有问题呀,直接只用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;
            }
        }
    };

      

  • 相关阅读:
    关于天气插件代码
    新的起点了
    如何实现按下回车键实现搜索

    random模块
    循环导入问题
    模块的搜索路径
    import 和from…import
    模块四种形式
    面向过程编程
  • 原文地址:https://www.cnblogs.com/xyqxyq/p/12235481.html
Copyright © 2011-2022 走看看