编写一个函数,检查输入的链表是否是回文的。
示例 1:
输入: 1->2
输出: false
示例 2:
输入: 1->2->2->1
输出: true
今天第一次学链表的 如果按照我自己的思路就是:
先看跟2取余能否得0;
然后把他转为int数组(这块让我自己写现在还写不出来),
把数组分两半 num.Length /2;
正循环 前一半数组 ,倒循环后一半数组,
比较每个i是否相等就完事了。
既然学了新东西就要用新知识做,还好能看懂。
public bool IsPalindrome(ListNode head) {
// 时间复杂度:O(n)
// 空间复杂度:O(n),list的长度是n
ListNode node = head;
List<int> list = new List<int>();
while(node != null)
{
list.Add(node.val);
node = node.next;
}
int count = list.Count();
for(int i = 0; i < count/2; i++)
{
if(list[i] != list[count - i - 1]) // 注意是[count-i-1]
{
return false;
}
}
return true;
}