【C語言】LeetCode 234. Palindrome Linked List
阿新 • • 發佈:2019-02-16
題目:
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; }