LeetCode 234 回文鍊錶

2021-10-06 05:02:02 字數 1135 閱讀 7693

判斷乙個鍊錶是否為回文鍊錶。

示例 1:

輸入:1->2輸出:false
示例 2:

輸入:1->2->2->1輸出:true
解題思路1:將鍊錶放在乙個陣列裡,因為陣列具有隨機訪問的特點,所以可以採用陣列來比較是否是回文鍊錶。

class solution 

int first = 0;

int end = array.size()-1;

while(first < end)

first++;

end--;

}return true;

}}

解題思路2:將該鍊錶從中間分為兩半,將後半段鍊錶進行反轉,然後與前半段的鍊錶比較是否相等。

class solution 

listnode slow = head;

listnode fast = head.next;

while(fast != null && fast.next != null)

if(fast != null)

//分割

cut(head,slow);

//反轉

listnode tmp = reverse(slow);

//比較

return isequal(head,tmp);

}private void cut(listnode head,listnode slow)

head.next = null;

}private listnode reverse(listnode head)

return newhead;

}private boolean isequal(listnode head,listnode newhead)

head = head.next;

newhead = newhead.next;

}return true;

}}

LeetCode 234 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。definition for singly linked list.struct listnode bool ispalindrome struct listnode head 示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 要...

leetcode 234 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2輸出 false 示例 2 輸入 1 2 2 1輸出 true 解法1 使用棧 使用快慢指標找中點,原理是每次快指標走兩步,慢指標走一步,等快指標走完時,慢指標的位置就是中點。我們還需要用棧,每次慢指標走一步,都把值存入棧中,等到達中點時,鍊錶的前...

LeetCode 234 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。解題思路 根據 o n 時間複雜度和 o 1 空間複雜度的要求,則不能使用堆疊。首先找到中間節點,然後反轉中間節點之後的節點,最後比較頭結點和中間節點之後元素的大小。bool solution ispalindrome listnode head 1.找到鍊錶的中間位置...