题解 | #判断一个链表是否为回文结构#

判断一个链表是否为回文结构

http://www.nowcoder.com/practice/3fed228444e740c8be66232ce8b87c2f

思路: 两次正序遍历解决。
1. 第一次把每个节点值按顺序依次放到 vector<int > v1 里面,这个是正向顺序,同时得到总节点数 n.
2. 第二次遍历时候,正数第 t 个节点就是逆序的 第 n-t 个节点。 所以第二遍从 v2 尾部开始依次赋值就好了。 v2 里面存的就是 逆序遍历结果。

特点: 
1.O(N)复杂度
2. 不改变原链表结构


class Solution {
public:
    /**
     * 
     * @param head ListNode类 the head
     * @return bool布尔型
     */
    bool isPail(ListNode* head) {
        // write code here
        if (!head || !head->next) {
            return true;
        }
        std::vector <int> v1;
        ListNode* p = head;
        int i = 0;
        while (p) {
            v1.push_back(p->val);
            p = p->next;
            i++;
        }
        int n = i;
        vector<int> v2(n, 0);
        ListNode  *q = head;
        i--;
        while (q) {
            v2[i] = q->val;
            q = q->next;
            i--;
        }
        for (int j = 0; j<n; ++j) {
            if (v1[j] != v2[j]) {
                return false;
            }
        }
        return true;
        
        
    }
};


全部评论

相关推荐

10-10 16:30
济宁学院 Java
一表renzha:面试官:蓝桥杯三等奖?你多去两次厕所都能拿二等吧
点赞 评论 收藏
分享
丿南烟丶:黑白模板吧,不要这样花哨的。 主要成就太空了,和获奖融在一起,写一两行就行了。 职业技能不要这样排,就传统的掌握精通什么什么然后举例补充的一些重要技术点。 自我介绍说实话也没啥用,可以删了。 把自己的两个项目方案细节补充上去,为什么这样设计,怎么设计,成果是什么按star法则来写 你要引导面试官来问你的技能和项目,你的获奖和自我介绍别人可能看都不看一眼或者不太在乎,重要的是展示你能干活的能力
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务