2022년 03월 12일 토요일 - 칩 셔플 은근 어렵다잉...
오늘 올려볼 문제는 138번 Copy List with Random Pointer 이라는 문제이다.
사진을 클릭하면 해당 문제로 이동합니다.
오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.
이상한 예외처리 문을 적어서 더 빨리 풀 수 있는거 좀 늦게 풀었다..
입력
사진에서도 볼 수 있듯이 Linked List 하나가 입력으로 들어온다.
풀이 및 코드
주어진 Linked List를 깊은 복사하여 리턴하는 문제이다.
오늘은 처음부터 정답을 생각해냈다.
주어진 Linked List들을 ArrayList에 다 넣고 각 val을 ArrayList index로 바꾸어주었다.
그 후에 ArrayList에 들어있는 Node들에 next와 random 값을 업데이트 해주는 방식으로 구현했다.
이제 코드를 봐보자!
풀이코드
class Solution {
public Node copyRandomList(Node head) {
if(head == null)
return null;
Node start = head;
ArrayList<Node> arr = new ArrayList<Node>();
for(int i = 0; head != null; i++)
{
arr.add(new Node(head.val));
head.val = i;
head = head.next;
}
head = start;
arr.get(0).random = head.random == null ? null : arr.get(head.random.val);
head = head.next;
for(int i = 1; i < arr.size(); i++)
{
arr.get(i - 1).next = arr.get(i);
arr.get(i).random = head.random == null ? null : arr.get(head.random.val);
head = head.next;
}
return arr.get(0);
}
}
제출 화면
오늘 문제는 내가 잘못된 예외처리 구문을 하나 넣어서 조금 시행착오를 겪었다.
하지만 금방 해결했다. ㅋㅋㅋㅋㅋ
내일 문제도 재밌는 문제가 나오길 바란다.
내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.
'LeetCode 문제 풀이' 카테고리의 다른 글
| [LeetCode] 71번 문제를 풀어보았다. (ft. java) (0) | 2022.03.14 |
|---|---|
| [LeetCode] 20번 문제를 풀어보았다. (ft. java) (0) | 2022.03.13 |
| [LeetCode] 61번 문제를 풀어보았다. (ft. java) (0) | 2022.03.11 |
| [LeetCode] 2번 문제를 풀어보았다. (ft. java) (0) | 2022.03.10 |
| [LeetCode] 82번 문제를 풀어보았다. (ft. java) (0) | 2022.03.09 |