【C语言】LeetCode 234. Palindrome Linked List

来源:互联网 发布:淘宝充值红包退款 编辑:程序博客网 时间:2024/05/16 07:56

题目:

Given a singly linked list, determine if it is a palindrome.

Follow up:
Could you do it in O(n) time and O(1) space?

解法:

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     struct ListNode *next; * }; */ //用数组记录链表中每一个节点的地址,然后遍历数组即可实现回文判断 //由于链表中节点个数不知道,故采用动态分配数组的形式bool isPalindrome(struct ListNode* head) {    struct ListNode **arr=(struct ListNode*)malloc(1*sizeof(struct ListNode*));    int num=0;        while(head)    {        arr[num]=head;        num++;        head=head->next;        arr=(struct ListNode*)realloc(arr,(1+num)*sizeof(struct ListNode*));    }    num--;    for(int i=0;i<num;i++)    {        if(arr[i]->val!=arr[num]->val)        {            free(arr);            return false;        }        num--;    }    free(arr);    return true;}


0 0