c++ 中的循环判断bug

"本文记录了一个关于LeetCode 234题的编程问题,即判断链表是否为回文。作者在实现过程中遇到了一个bug,原本使用的条件 "!p" 导致测试用例[1,2]无法正确判断,改为 "p!=nullptr" 后问题解决。文章探讨了这个问题的原因,并分享了解决方案,旨在帮助读者理解链表操作的细节和优化代码的技巧。"
摘要由CSDN通过智能技术生成

今天写leetcode234题回文链表的时候遇到了一个问题
题目如下

//给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 
//
// 
//
// 示例 1: 
//
// 
//输入:head = [1,2,2,1]
//输出:true
// 
//
// 示例 2: 
//
// 
//输入:head = [1,2]
//输出:false
// 
//
// 
//
// 提示: 
//
// 
// 链表中节点数目在范围[1, 10⁵] 内 
// 0 <= Node.val <= 9 
// 
//
// 
//
// 进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 
// Related Topics 栈 递归 链表 双指针 
//leetcode submit region begin(Prohibit modification and deletion)
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
#include "bits/stdc++.h"

using namespace std;

 */***这是第一版代码***
class Solution {
public:
    bool isPalindrome(ListNode* head) {
        stack<ListNode*> order;
        ListNode *p = head;
        while (!p){
            order.push(p);
            p = p->next;
        }
        p = head;
        while (!p){
            ListNode* node = order.top();
            if(p->val != node->val) return false;
            p = p->next;
            order.pop();
        }
        return true;
    }
};

 */***这是第二版代码***
class Solution {
public:
    bool isPalindrome(ListNode* head) {
        stack<ListNode*> order;
        ListNode *p = head;
        while (p != nullptr){
            order.push(p);
            p = p->next;
        }
        p = head;
        while (p != nullptr){
            ListNode* node = order.top();
            if(p->val != node->val) return false;
            p = p->next;
            order.pop();
        }
        return true;
    }
};
//leetcode submit region end(Prohibit modification and deletion)

我在while循环判断的时,偷懒就写了个!p(平时我也是这么写的,一点毛病没有),今天居然一直报错,说我测试用例[1,2]判断有误,我老老实实改回来了之后,代码就不报错,成功通过。于是想着记录一下这个bug 希望有本领的大哥能过目一下,看看是哪里有问题,求求了!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值