본문 바로가기
CodeSignal

removeKFromList

by Doromi 2024. 3. 8.
728x90
반응형
주어진 연결 리스트에서 값이 k인 노드를 모두 제거하는 문제입니다. 이 문제를 해결하기 위해서는 연결 리스트를 순회하면서 값이 k인 노드를 발견하면 해당 노드를 제거해야 합니다.
// Singly-linked lists are already defined with this interface:
// class ListNode<T> {
//   public T value { get; set; }
//   public ListNode<T> next { get; set; }
// }
//
ListNode<int> solution(ListNode<int> l, int k) {
 if(l == null){
     return null;
 }
 
 ListNode<int> current = l;
 while(current != null && current.value == k){
     current = current.next;
 }
 
 ListNode<int> prev = null;
 ListNode<int> temp = current;
 
 while(temp != null){
     if(temp.value == k){
         prev.next = temp.next;
     }else{
         prev = temp;
     }
     temp = temp.next;
 }
 
 return current;
}
헤드 노드부터 시작하여 연결 리스트를 순회합니다.
각 노드를 방문하면서 그 값이 k와 일치하는지 확인합니다.
값이 k와 일치하는 노드를 발견하면 그 노드를 제거합니다.
노드를 제거하려면 해당 노드의 이전 노드가 있어야 합니다. 따라서 이전 노드의 next 포인터를 현재 노드의 다음 노드로 설정합니다.
마지막으로 연결 리스트의 끝까지 반복합니다.
728x90
반응형

'CodeSignal' 카테고리의 다른 글

addTwoHugeNumbers  (0) 2024.03.11
isListPalindrome  (0) 2024.03.09
isCryptSolution  (0) 2024.03.07
sudoku2  (2) 2024.03.06
rotateImage  (1) 2024.02.28