본문 바로가기
728x90
반응형

Leetcode43

141. Linked List Cycle 주어진 연결 리스트(링크드 리스트)에 순환(사이클)이 존재하는지 여부를 판단하는 문제입니다. 문제 설명: 주어진 연결 리스트에 순환(사이클)이 존재하면 true를, 순환이 존재하지 않으면 false를 반환하세요. 연결 리스트는 각 노드가 데이터와 다음 노드를 가리키는 링크로 구성됩니다. 순환(사이클)이 존재한다는 것은 연결 리스트에서 어떤 노드를 시작점으로 하더라도 해당 노드를 지나면 언젠가 다시 동일한 노드에 도달할 수 있다는 것을 의미합니다. 예를 들어, 다음과 같은 연결 리스트가 순환을 가지고 있으면 true를 반환해야 합니다: 3 -> 2 -> 0 -> 4 ^ | | v +---------+ 반면에, 순환을 가지지 않는 연결 리스트는 다음과 같습니다: 1 -> 2 -> 3 -> 4 순환을 판단하기.. 2023. 11. 5.
110. Balanced Binary Tree 주어진 이진 트리가 균형 잡힌 트리인지 확인하세요. 균형 잡힌 트리는 모든 서브트리의 높이 차이가 1 이하인 트리를 의미합니다. 즉, 모든 서브트리가 높이 균형을 유지하고 있는 경우 균형 잡힌 트리입니다. 예를 들어, 다음은 균형 잡힌 트리입니다: 3 / \ 9 20 / \ 15 7 각 서브트리의 높이 차이가 1 이하입니다. 반면에, 다음 트리는 균형 잡힌 트리가 아닙니다: 1 / \ 2 2 / \ 3 3 / \ 4 4 여기서 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이가 2이므로 균형 잡힌 트리가 아닙니다. 균형 잡힌 트리 여부를 판단하기 위해, 주어진 트리의 각 노드에서 왼쪽 서브트리와 오른쪽 서브트리의 높이를 비교하여 높이 차이가 1 이하인지 확인해야 합니다. 이 작업을 트리의 모든 노드에 대해 재.. 2023. 11. 4.
70. Climbing Stairs 주어진 계단을 오를 때, 각 단계마다 1단계 또는 2단계씩 올라가는 방법의 수를 계산하는 문제입니다. 문제 설명: 당신은 n개의 계단을 올라야 합니다. 한 번에 1단계 또는 2단계씩 올라갈 수 있을 때, n개의 계단을 올라갈 수 있는 방법의 수를 계산하세요. 예를 들어, n = 3인 경우, 다음과 같은 방법으로 3개의 계단을 올라갈 수 있습니다: 1단계 -> 1단계 -> 1단계 1단계 -> 2단계 2단계 -> 1단계 따라서 3개의 계단을 올라가는 방법은 총 3가지입니다. 예시: 입력: n = 2 출력: 2 설명: 2개의 계단을 올라가는 방법은 2가지입니다: 1단계 -> 1단계 또는 2단계 한 번. 입력: n = 3 출력: 3 설명: 3개의 계단을 올라가는 방법은 3가지입니다 (위의 예시 참고). 이 문제.. 2023. 11. 3.
101. Symmetric Tree 이진 트리가 대칭 구조인지 여부를 판단하는 문제입니다. 대칭 구조는 트리가 좌우 대칭인지를 의미합니다. 즉, 루트 노드를 중심으로 좌우 하위 트리가 대칭인 경우에 대칭 트리입니다. 문제 설명: 주어진 이진 트리가 대칭 구조인지 판단하세요. 이진 트리의 대칭 구조는 다음과 같이 정의됩니다: 루트 노드가 비어있으면 (null이면) 대칭입니다. 루트 노드가 비어있지 않다면, 좌우 서브트리가 대칭이어야 합니다. 좌우 서브트리의 대칭 여부는 다음과 같이 판단됩니다: 두 서브트리의 루트 노드 값이 동일해야 합니다. 왼쪽 서브트리의 왼쪽 서브트리와 오른쪽 서브트리의 오른쪽 서브트리가 대칭이어야 합니다. 왼쪽 서브트리의 오른쪽 서브트리와 오른쪽 서브트리의 왼쪽 서브트리가 대칭이어야 합니다. 예시: 다음은 대칭 트리와 .. 2023. 11. 1.
414. Third Maximum Number 주어진 배열에서 세 번째로 큰 수를 찾는 문제입니다. 주어진 배열에서 중복된 수는 무시하고, 유일한 값만 고려합니다. 문제 설명: 주어진 배열 nums에서 세 번째로 큰 값을 찾습니다. 중복된 값은 무시하고, 유일한 값만 고려합니다. 예를 들어, 입력 배열 nums가 다음과 같다면: [3, 2, 1] 여기서 세 번째로 큰 값을 찾으면 1이 됩니다. 또 다른 예로, 입력 배열 nums가 다음과 같다면: [1, 2] 여기서 세 번째로 큰 값을 찾으면 2가 됩니다. 첫 번째로 큰 값과 두 번째로 큰 값은 중복된 수를 무시하고 계산합니다. 노트: 배열 nums에는 최소한 세 개의 유일한 값이 포함되어야 합니다. 적어도 세 번째로 큰 값을 찾을 수 있어야 합니다. 이 문제를 해결하는 방법으로는 배열을 한 번 순회.. 2023. 11. 1.
283. Move Zeroes 주어진 배열에서 숫자 0을 배열의 끝으로 이동시키는 문제입니다. 주어진 배열을 수정하며, 0 이외의 숫자들은 순서를 유지해야 합니다. 문제 설명: 주어진 배열 nums가 주어집니다. 이 배열에서 숫자 0을 배열의 끝으로 이동시키세요. 0 이외의 숫자들의 순서는 유지되어야 합니다. 예를 들어, 입력 배열 nums가 다음과 같다면: [0, 1, 0, 3, 12] 이 배열을 수정하여 숫자 0을 배열의 끝으로 이동시키면: [1, 3, 12, 0, 0] 노트: 배열을 수정하며 0을 뒤로 이동시켜야 합니다. 0 이외의 숫자들은 순서를 유지해야 합니다. 추가 배열을 사용하지 말고 주어진 배열을 직접 수정해야 합니다. public void MoveZeroes(int[] nums) { int count = 0; int .. 2023. 10. 31.
303. Range Sum Query - Immutable 주어진 배열에서 특정 범위의 합을 계산하는 문제입니다. 주어진 배열은 변경되지 않으며 여러 번 쿼리를 수행할 수 있어야 합니다. 이 문제를 해결하기 위해 NumArray 클래스를 구현하는 것이 목표입니다. 다음은 문제의 자세한 설명입니다: 문제 설명: 불변 (immutable) 배열 nums가 주어집니다. NumArray 클래스를 구현하여 다음 두 가지 메서드를 제공하세요: NumArray(int[] nums): 배열 nums를 입력으로 받아 초기화합니다. int SumRange(int left, int right): left에서 right까지 (양 끝 포함) 범위 내의 원소의 합을 반환합니다. 예시: 만약 nums = [1, 2, 3, 4, 5]로 초기화된다면, 다음과 같이 NumArray 클래스를 사.. 2023. 10. 31.
728x90
반응형