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

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

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


       有这样一个场景,给你一个单链表的头节点 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。

相关文章
|
Dubbo Java 应用服务中间件
nacos常见问题之Nacos dubbo耗时严重如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
|
存储 关系型数据库 数据库
【北亚企安数据恢复】Ceph分布式存储基本架构&Ceph数据恢复流程
Ceph存储可分为块存储,对象存储和文件存储。Ceph基于对象存储,对外提供三种存储接口,故称为统一存储。 Ceph的底层是RADOS(分布式对象存储系统),RADOS由两部分组成:OSD和MON。 MON负责监控整个集群,维护集群的健康状态,维护展示集群状态的各种图表,如OSDMap、MonitorMap、PGMap和CRUSHMap。 OSD负责存储数据、复制数据、平衡数据、恢复数据,与其它OSD间进行心跳检查等。通常情况下一块硬盘对应一个OSD。
|
Java 数据安全/隐私保护 C++
一款免配置的浏览器编程工具jupyter,可以同时编写 python,java,c,c++,体积小
一款免配置的浏览器编程工具jupyter,可以同时编写 python,java,c,c++,体积小
543 2
|
29天前
|
数据采集 弹性计算 供应链
包年包月、按量付费和抢占式实例有什么区别?阿里云ECS付费类型如何选择?
阿里云ECS提供三种付费模式:包年包月适合长期稳定使用,价格优惠且支持备案;按量付费按小时计费,灵活但成本较高,适合短期或突发业务;抢占式实例价格低至1折,但可能被释放,仅推荐用于无状态应用。根据业务需求选择合适模式可优化成本与稳定性。
84 20
|
存储 安全 关系型数据库
后端技术:构建高效稳定的现代Web应用
【10月更文挑战第5天】后端技术:构建高效稳定的现代Web应用
695 1
|
9月前
|
大数据 BI
《大模型时代的智能BI—Quick BI》评测获奖名单公布
《大模型时代的智能BI—Quick BI》评测获奖名单公布
233 1
|
11月前
|
移动开发 前端开发 JavaScript
React 音频上传组件 Audio Upload
本文介绍如何使用React构建音频上传组件,涵盖文件上传原理、React中文件处理步骤及常见问题解决方案。通过代码示例详细讲解了文件格式和大小限制、预览功能、进度条显示等实现方法,并针对跨域问题、文件名冲突和错误处理等易错点提供了解决方案,帮助开发者构建稳定可靠的音频上传功能。
315 25
|
中间件 API 网络架构
Django后端架构开发:从匿名用户API节流到REST自定义认证
Django后端架构开发:从匿名用户API节流到REST自定义认证
333 0
|
网络协议 网络架构
OSI 和 TCP/IP 模型
【8月更文挑战第24天】
518 0
|
前端开发 UED
【专栏:HTML与CSS实战项目篇】创建一个具有复杂布局的电商详情页
【4月更文挑战第30天】构建复杂布局的电商详情页涉及页面结构规划、样式设计和交互效果实现。首先规划顶部导航栏、商品图片展示区、商品信息区、用户评价区和相关商品推荐区。在样式设计上,注重色彩搭配、字体选择、布局与间距及图片处理。交互效果包括图片放大、添加到购物车按钮、滚动监听和评论互动,以提升用户体验。实际开发中需考虑跨设备兼容性和用户体验优化。
406 5