编程高级陷阱-破坏原有生态

简介: 编程高级陷阱-破坏原有生态

       今天聊点有意思的,昨天写了一个链表翻转,说一说里面大家会遇到的坑,具体可以看 教你三指针拿捏链表翻转


       有这样一个场景,给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。

示例 1:

输入:head = [1,2,2,1]

输出:true

       在看完链表翻转后,其实就有一个思路,我们把原来的链表翻转过来,然后遍历两个链表的值是否相等不就行了吗?

       好,链表翻转在上一篇种已经有了,我们只需要在遍历链表就行。

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode* pre = nullptr;
        ListNode* cur = head;
        while(cur != nullptr) {
            ListNode* temp = cur->next;
            cur->next = pre;
            pre = cur;
            cur = temp;
        }
        return pre;
    }
    
    bool isPalindrome(ListNode* head) {
        ListNode* res = reverseList(head);
        while(head != nullptr) {
            if(res->val != head->val) return false;
            res = res->next;
            head = head->next;
        }
        return true;
    }
};

       这样的做法是否正确呢?前面氛围已经铺垫好了,前面分析其实有一个漏洞,大家也可以仔细分析一下。链表翻转是没问题的,把链表从左到右的变成从右到左的然后在遍历也是没问题的,但是想一下,当我们正序遍历原链表的时候,原链表生态已经被破坏了,换句话说就是,翻转后的链表是从右至左,此时head开始正序遍历,他已经不是原来那个链表了。


       所以这么做,正序遍历链表的时候就会读到空指针,出现奇奇怪怪的bug。

相关文章
|
28天前
|
监控 安全 网络安全
网络安全行为可控定义以及表现内容简述
网络安全行为可控定义以及表现内容简述
19 1
combineLatest 使用的一个陷阱和基于 debounceTime 的解决方案
combineLatest 使用的一个陷阱和基于 debounceTime 的解决方案
|
存储 安全 搜索推荐
详解软件开发的标准过程(生命周期):跟着标准搞,设计没烦恼
详解软件开发的标准过程(生命周期):跟着标准搞,设计没烦恼
|
人工智能 算法
为什么很少有游戏支持场景破坏?是因为技术问题吗?
最近很多游戏狂热迷们正火热讨论的一个问题是:为什么很少有游戏支持场景破坏?说实话小编也非常好奇,于是乎小编去查了好多资料。接下来小编带领大家一起去深挖究竟!
99 0
为什么很少有游戏支持场景破坏?是因为技术问题吗?
|
移动开发 JavaScript 前端开发
前端性能优化实践之代码层面更改(3)
前端性能优化实践之代码层面更改(3)
146 0
|
JSON JavaScript 数据可视化
提高效率,记一个内部工具的开发经历
提高效率,记一个内部工具的开发经历
174 0
|
前端开发 JavaScript
小身材大用途,用PrimusUI驾驭你的页面
“PrimusUI”是自己在借鉴了如今网上很多开源的UI库,再经过自己整理加工的一个简单代码集合。
小身材大用途,用PrimusUI驾驭你的页面
《实践者的研究方法》—— 第1章 软件的本质 1.1 软件的本质
本节书摘来自华章出版社《实践者的研究方法》一书中的第1章,第1.1节,作者布鲁斯 R. 马克西姆(Bruce R. Maxim)郑人杰 马素霞,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 第1章 Software Engineering: A Practitioner’s Approach, Eighth Edition 软件的本质 要 点 浏 览 概念:计算机软件是由专业人员开发并长期维护的软件产品。
2070 1
再谈研发那些事——两项核心工作的区别与联系
导读:不久前,技术工程师zhuoqun发表了两篇博客在《开发与研发:区别很大》和《开发与研发:领会编程魅力所在》引发了技术人士的热议。在那两篇文章里,zhuoqun谈到了程序开发两大类别:开发和研发的区别以及两类工程师的职业规划。
1245 0