LEETCODE-Palindrome Linked List
2015-09-26 17:14
316 查看
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?
思路:将链表中的值赋值到一个整形数组中并对数组中的元素进行处理计算,判断是否为回文;
将整形数组改为vector容器;
vector L; //定义一个vector的整形容器L;
L.push_back(p->val);//将链表中p指向的元素的值压入L vector容器中;
但是利用vector容器会增加时间复杂度;
Follow up:
Could you do it in O(n) time and O(1) space?
思路:将链表中的值赋值到一个整形数组中并对数组中的元素进行处理计算,判断是否为回文;
/** * 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) { int L[100000]; if(head == NULL) return 1; if(head->next == NULL) return 1; ListNode* p = head; int i = 0; while(p != NULL){ L[i] = p->val; p = p->next; i++; } i = i - 1; for(int j = 0; j <= i; j++){ if(L[j] != L[i]) return 0; i--; } return 1; } };
将整形数组改为vector容器;
vector L; //定义一个vector的整形容器L;
L.push_back(p->val);//将链表中p指向的元素的值压入L vector容器中;
/** * 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) { vector<int> L; if(head == NULL) return 1; if(head->next == NULL) return 1; ListNode* p = head; int i = 0; while(p != NULL){ L.push_back(p->val); p = p->next; i++; } i = i - 1; for(int j = 0; j <= i; j++){ if(L[j] != L[i]) return 0; i--; } return 1; } };
但是利用vector容器会增加时间复杂度;
相关文章推荐
- [C/C++]反转链表
- ruby 数组使用教程
- Ruby中的数组和散列表的使用详解
- C#实现AddRange为数组添加多个元素的方法
- C#实现基于链表的内存记事本实例
- C#动态调整数组大小的方法
- 详解Lua中的数组概念知识
- Perl中的列表和数组学习笔记
- 探索PowerShell (八) 数组、哈希表(附:复制粘贴技巧)
- C#中数组初始化与数组元素复制的方法
- C#交错数组用法实例
- PowerShell数组的一些操作技巧
- C#通过yield实现数组全排列的方法
- C#不重复输出一个数组中所有元素的方法
- C#实现将数组内元素打乱顺序的方法
- Ruby简明教程之数组和Hash介绍
- C语言查找数组里数字重复次数的方法
- C++ Vector用法详解
- C语言柔性数组实例详解
- Perl中怎样从数组中删除某个值?