請判斷乙個鍊錶是否為回文鍊錶。
示例 1:
輸入: 1->2
輸出: false
示例 2:
輸入: 1->2->2->1
輸出: true
高階:你能否用 o(n) 時間複雜度和 o(1) 空間複雜度解決此題?
思路:尋找中間結點,然後將後半部分鍊錶倒置,後半部分鍊錶長度是小於或等於原鍊錶的,所以根據後半部分鍊錶來確定對比迴圈次數
#include#includeusing namespace std;
typedef struct listnode
listnode,*ptrtonode;
void print(ptrtonode n)
printf("\n");
return;
}ptrtonode insert(ptrtonode n,int e)
else
q->next = p;
}return n;
}class solution
p = head;
n = n/2;
while(n>0)
listnode *q;
listnode *temp = null;
while(p!=null)
while(temp!=null)
temp = temp->next;
head = head->next;
}return true;
}};int main()
else
//// print(m);
return 0;
}
力扣 leetcode 234 回文鍊錶
判斷乙個鍊錶是否是回文鍊錶 並用 o n 時間複雜度和 o 1 空間複雜度解決此題?示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 用快慢指標找到鍊錶的中點,對後半部分的鍊錶就地逆置,再進行比較 definition for singly linked li...
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 使用棧 使用快慢指標找中點,原理是每次快指標走兩步,慢指標走一步,等快指標走完時,慢指標的位置就是中點。我們還需要用棧,每次慢指標走一步,都把值存入棧中,等到達中點時,鍊錶的前...