단일 연결 목록에서 노드를 삭제하는 함수를 작성하라.
list의 헤드에 대한 액세스 권한이 부여되지 않고 대신 직접 삭제 될 노드에 대한 액세스 권한이 부여됩니다.
삭제할 노드는 list의 tail 노드가 아니다.
Constraints:
- The number of the nodes in the given list is in the range [2, 1000].
- -1000 <= Node.val <= 1000
- The value of each node in the list is unique.
- The node to be deleted is in the list and is not a tail node
System.out.println으로 찍어보니 순회는 불필요해 보인다.
현재 노드를 없애려면
다음 노드를 현재노드로 다다음 노드를 다음 노드로 치환
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public void deleteNode(ListNode node) {
ListNode temp = null;
temp = node.next.next;
node.next = temp;
}
}
Your input [4,5,1,9] 5
Your answer [4,5,9]
Expected answer [4,1,9]
4 -> 5 -> 9로 바뀌었다 그렇다면 val을 바꿔주면 어떨까
class Solution {
public void deleteNode(ListNode node) {
ListNode temp = null;
node.val = node.next.val;
temp = node.next.next;
node.next = temp;
}
}
Runtime: 0 ms
Memory Usage: 38.2 MB
temp 필요 없을거 같다
class Solution {
public void deleteNode(ListNode node) {
node.val = node.next.val;
node.next = node.next.next;
}
}
'Algorithm > LeetCode' 카테고리의 다른 글
[LeetCode] - Merge Two Sorted Lists (0) | 2021.05.05 |
---|---|
[LeetCode] - Remove Nth Node From End of List (0) | 2021.05.04 |
[LeetCode] - Binary Tree Level Order Traversal (0) | 2021.04.29 |
[LeetCode] - Symmetric Tree (0) | 2021.04.29 |
[LeetCode] - Validate Binary Search Tree (0) | 2021.04.27 |