팰린드롬 연결 리스트 - I
1) 목록의 중간까지 도달하십시오.
2) 중간에서 마지막까지 반전
3) 비교 및 반환
var isPalindrome = function(head) {
const midElementOfList = getMiddleElemnt(head);
const reversedFromMiddleTillEnd = reverseList(midElementOfList);
return checkIfPalindrome(head, reversedFromMiddleTillEnd);
};
var getMiddleElemnt = (head) => {
let slow = head;
let fast = head;
while(fast && fast.next !==null && fast.next.next !== null){
slow = slow.next;
fast= fast.next.next;
}
return slow;
}
var checkIfPalindrome = (head, reverseList) =>{
while(head!==null && reverseList !==null){
if(head.val!== reverseList.val){
return false;
}
head = head.next;
reverseList= reverseList.next;
}
return true;
}
var reverseList = function(head) {
const reverseR = (head) => {
if (head === null || head.next === null) {
return head;
}
let rest_trail = reverseR(head.next);
const nextOfHead = head.next;
nextOfHead.next = head;
head.next = null;
return rest_trail;
}
return reverseR(head);
}
접근 2:
1) 리스트 끝까지 도달하고 각 노드의 값을 배열에 저장합니다.
2) 이제 배열을 뒤집고 각 요소를 실제 배열과 비교합니다.
접근법 3:
1) 목록을 먼저 복제 - (복잡성 및 추가 작업 추가)
1) 이제 복제 목록 역방향
2) 각 요소를 실제 List와 비교합니다.
Reference
이 문제에 관하여(팰린드롬 연결 리스트 - I), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/zeeshanali0704/palindrome-linked-list-i-445텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)