연결 목록 인터뷰 작업 단순화
그래서 추가 작업 해결을 단순화하기 위해 연결 목록에서 인기 있는 방법을 구현하고 모든 유형의 노드 구현을 허용하는 JavaScript 코드를 만들었습니다.
입어봤습니다my github
이제 이 추상화 해결remove-linked-list-elements 작업을 사용하면 원숭이도 할 수 있습니다.
완벽한 솔루션
// [put LinkedList code here]
const removeElements = (head, val) => {
const ll = LinkedList();
return ll.removeItems(head, v => v === val);
};
첫 번째
노드 목록을 생성하는 함수를 전달하여 인스턴스 생성
linkedList
/*
* function ListNode(val = 0, next = null) {
* return { val, next };
* }
*/
const linkedList = LinkedList((value, next) => {
return new ListNode(value, next);
});
제 경우에는 기본적으로 LeetCode Linked Node 생성자와 정확히 일치하기 때문에 이 함수를 전달할 필요가 없습니다.
초
removeItems
메서드를 호출하고 이 목록의 헤드를 반환합니다.return linkedList.removeItems(head, v => v === val);
이 LeetCode 작업에서는 기존 목록을 배열로 변환하고 필터링한 다음 다시 목록으로 변환할 수 없습니다. 이 작업은 참조도 확인하므로 이러한 종류의 코드를 제출하려고 하면 통과하지 않아야 합니다.
const removeElements = (head, val) => {
const ll = LinkedList();
return ll.array2list(
ll.list2array().filter(v => v === val)
);
};
이제 이러한 유형의 작업을 해결하는 것은 매우 쉽습니다.
중복 작업 삭제
deleting duplicates in sorted list인 다른 작업을 해결해 보겠습니다.
이 목록은 정렬되어 있으므로 중복 항목이 나란히 표시되므로 현재 값을 마지막으로 본 값과 비교하고 변경되면 업데이트하는 간단한 코드를 작성할 수 있습니다.
const deleteDuplicates = head => {
let lastVal;
return LinkedList().removeItems(head, val => {
if (val === lastVal) return true;
lastVal = val;
return false;
});
};
매우 간단한 코드. 이 완전한 솔루션을 작성하는 데 60초도 채 걸리지 않았습니다.
운동장
여기에서 이 코드로 약간의 플레이를 할 수 있습니다.
instacode.dev playground
Reference
이 문제에 관하여(연결 목록 인터뷰 작업 단순화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gkucmierz/simplifying-linked-list-interview-tasks-126텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)