剑指 Offer II 027. 回文链表 ●

这篇文章讲解了如何通过模拟遍历链表并比较首尾节点值判断链表是否为回文结构。使用 C++ 实现的方法中,将链表元素转换为 vector 后逐个对比两端节点,若所有对应位置的值相等则链表为回文。适合面试和技术校验。
摘要由CSDN通过智能技术生成

剑指 Offer II 027. 回文链表 ●

描述

给定一个链表的 头节点 head ,请判断其是否为回文链表

如果一个链表是回文,那么链表节点序列从前往后看和从后往前看是相同的。

示例

在这里插入图片描述
输入: head = [1,2,3,3,2,1]
输出: true

题解

1. 模拟

遍历链表节点后,首尾判断数值是否相等。

/**
 * 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) {}
 * };
 */
class Solution {
public:
    bool isPalindrome(ListNode* head) {
        ListNode* curr = head;
        vector<int> nums;
        while(curr != nullptr){
            nums.emplace_back(curr->val);
            curr = curr->next;
        }
        int n = nums.size();
        for(int i = 0; i <= n / 2; ++i){
            if(nums[i] != nums[n-1-i]) return false;
        }
        return true;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值