chore(CPlusPlus): add palindrome-linked-list
parent
d3c2184af8
commit
abafa6cb6b
|
@ -0,0 +1,80 @@
|
|||
#include <bits/stdc++.h>
|
||||
using namespace std;
|
||||
|
||||
// TC = O(N)
|
||||
// SC = O(1)
|
||||
|
||||
// Given the head of a singly linked list, return true if it is a palindrome
|
||||
// or false otherwise.
|
||||
|
||||
// Example 1:
|
||||
// Input: head = [1,2,2,1]
|
||||
// Output: true
|
||||
|
||||
// Example 2:
|
||||
// Input: head = [1,2]
|
||||
// Output: false
|
||||
|
||||
|
||||
// Definition for singly-linked list.
|
||||
|
||||
struct ListNode {
|
||||
int val;
|
||||
ListNode* next;
|
||||
ListNode(int x) : val(x), next(NULL) {}
|
||||
};
|
||||
|
||||
class Solution {
|
||||
public:
|
||||
bool isPalindrome(ListNode* head) {
|
||||
if (head == NULL || head->next == NULL) return true;
|
||||
|
||||
vector<int> ans;
|
||||
ListNode* temp = head;
|
||||
while (temp) {
|
||||
ans.push_back(temp->val);
|
||||
temp = temp->next;
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
int j = ans.size() - 1;
|
||||
while (i < j) {
|
||||
if (ans[i] != ans[j]) return false;
|
||||
i++;
|
||||
j--;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
int main() {
|
||||
// Create a sample linked list
|
||||
ListNode* head = new ListNode(1);
|
||||
ListNode* node2 = new ListNode(2);
|
||||
ListNode* node3 = new ListNode(3);
|
||||
ListNode* node4 = new ListNode(2);
|
||||
ListNode* node5 = new ListNode(1);
|
||||
|
||||
head->next = node2;
|
||||
node2->next = node3;
|
||||
node3->next = node4;
|
||||
node4->next = node5;
|
||||
|
||||
// Create an instance of the Solution class
|
||||
Solution solution;
|
||||
|
||||
// Call the isPalindrome function and print the result
|
||||
bool isPalin = solution.isPalindrome(head);
|
||||
cout << "Is the linked list a palindrome? " << (isPalin ? "Yes" : "No") << endl;
|
||||
|
||||
// Clean up the linked list memory
|
||||
ListNode* temp = head;
|
||||
while (temp) {
|
||||
ListNode* nextNode = temp->next;
|
||||
delete temp;
|
||||
temp = nextNode;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue