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

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

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


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

相关文章
|
Web App开发 安全 iOS开发
TrollStore巨魔商店永久安装APP 可实现IOS应用双开 安装任意APP
TrollStore 是一个永久签名的监禁应用程序,可以永久安装您在其中打开的任何 IPA。
17299 0
|
5月前
|
人工智能 安全 Linux
保姆级图文教程:阿里云/本地部署OpenClaw 与必备 Skill 集合、免费大模型接入实战指南
2026 年的 OpenClaw 已经成为轻量化 AI 智能体的主流框架,但其原生能力仅能完成基础对话与文件操作,真正让它具备实用价值的核心是 Skill 扩展体系。ClawHub 上的技能数量已突破 25000 个,但盲目安装会导致冲突、上下文过载、安全风险上升等问题。本文整理一套真正高频、稳定、无冲突的必备 Skill 组合,同时提供 2026 年阿里云服务器、MacOS、Linux、Windows11 完整部署流程,以及阿里云百炼 Coding Plan 免费大模型 API 配置方法,所有步骤均为可直接执行的命令,零基础用户也能快速搭建稳定可用的智能体环境。
1000 6
|
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++,体积小
718 2
|
芯片 开发者
脉冲宽度调制
脉冲宽度调制(PWM)是一种通过调整脉冲信号的占空比来控制功率、亮度或速度等参数的技术,广泛应用于电机控制、电源转换和照明等领域。
1333 1
|
前端开发 UED
【专栏:HTML与CSS实战项目篇】创建一个具有复杂布局的电商详情页
【4月更文挑战第30天】构建复杂布局的电商详情页涉及页面结构规划、样式设计和交互效果实现。首先规划顶部导航栏、商品图片展示区、商品信息区、用户评价区和相关商品推荐区。在样式设计上,注重色彩搭配、字体选择、布局与间距及图片处理。交互效果包括图片放大、添加到购物车按钮、滚动监听和评论互动,以提升用户体验。实际开发中需考虑跨设备兼容性和用户体验优化。
590 5
|
存储 缓存 安全
systemd-ask-password:Linux中的安全密码获取工具
`systemd-ask-password`是Linux的密码获取工具,安全收集服务或应用所需的密码。它支持TTY和密码代理输入,有隐藏输入、密码缓存功能。参数如`--no-tty`、`--id`、`--timeout`等可定制交互方式。示例包括直接在TTY请求或通过代理。注意事项包括安全环境、权限管理和密码管理。最佳实践涉及定期更新和使用强密码,以及日志审计。
|
设计模式 前端开发 PHP
【PHP开发专栏】ThinkPHP框架实战开发
【4月更文挑战第29天】ThinkPHP是中国流行的PHP框架,以其轻量级、模块化和高安全性受到开发者欢迎。本文介绍了ThinkPHP的基础,包括MVC设计模式,以及核心组件如路由、数据库操作、表单处理、模板引擎和错误处理。通过一个博客系统示例,展示了如何进行项目开发,包括控制器、模型和视图的创建。使用ThinkPHP能有效提升开发效率,帮助开发者快速构建复杂的Web应用。
525 0