Programming/LeetCode

Programming/LeetCode

[Dart] 242. Valid Anagram

1. 문제https://leetcode.com/problems/valid-anagram/?envType=study-plan-v2&envId=top-interview-150    2. 요구사항1) 두 개의 문자열 s와 t가 있다.2) t가 s의 애너그램이면 true를 반환하고, 아니면 false를 반환한다.3) 애너그램은 두 문자열이 같은 문자를 같은 개수만큼 가지고 있지만, 순서는 다른 경우를 말한다.    3. 핵심 아이디어1) List에 알파벳이 나온 횟수 저장 알파벳 소문자 a부터 z의 각 문자의 등장 횟수를 저장할 List를 생성한다. s문자열을 순회하며 각 문자의 개수를 증가한다. t문자열도 순회하며 각 문자의 개수를 감소한다. 리스트 배열에 문자가 남아있는지, 남아있지 않은지로 애너그램을 판별..

Programming/LeetCode

[Dart] 228. Summary Ranges

1. 문제 https://leetcode.com/problems/summary-ranges/description/?envType=study-plan-v2&envId=top-interview-150   2. 요구사항1) 정렬된 정수 배열 nums가 주어진다.2) 연속된 숫자들을 하나의 범위로 묶어 문자열 형태로 반환한다.3) 출력은 오름차순으로 정렬된 문자열 리스트이다.4) 빈 배열일 경우, 빈 리스트 []를 반환한다.   3. 핵심 아이디어1) 배열을 순회하며 연속적인 숫자인지 확인배열을 순회하며 연속적인 숫자를 찾아야 한다. 만약 연속적이지 않은 숫자를 만나거나 배열의 마지막 숫자에 도달하면,지금까지 추적해온 범위의 시작 숫자부터 현재 숫자까지를 문자열로 만들어 결과 리스트에 저장한다. 새로운 연속 범..

Programming/LeetCode

[Dart] 219. Contains Duplicate II

1. 문제https://leetcode.com/problems/contains-duplicate-ii/?envType=study-plan-v2&envId=top-interview-150  2. 요구 사항1) 정수 배열 nums와 정수 k가 주어진다.2) nums에는 서로 다른 i, j 인덱스가 있고, abs(i - j) 를 만족하면 true를 반환한다.3) 조건에 맞지 않을 경우에는 false를 반환한다.   3. 핵심 아이디어1) 슬라이딩 윈도우 + Set 슬라이딩 윈도우는 최근 k개의 값만 저장하는 것이 목표이다. nums 배열을 순회하면서, 최근 k개 이내의 값을 Set에 저장한다. Set는 중복을 허용하지 않기 때문에, 값이 이미 들어있으면 중복이라는 뜻이다.k거리 이내에서 중복이 발생한 것이기..

Programming/LeetCode

[Dart] 206. Reverse Linked List

1. 문제 https://leetcode.com/problems/reverse-linked-list/description/?envType=study-plan-v2&envId=leetcode-75   2. 요구사항1) 단일 연결 리스트가 주어졌을 때 리스트를 역순으로 정렬한다.  3. 핵심 아이디어1) 연결 리스트 뒤집기  연결 리스트는 한 방향으로만 연결되어 있다.여기서 뒤집는다는 것은 각 노드가 가리키는 방향을 반대로 만든다는 뜻이다.   먼저 prev 포인터는 null로 초기화 하고, current 포인터는 head로 초기화한다.prev는 이전 노드를, current는 현재 노드를 가리킨다. current 포인터가 null 이 아닐 때 까지(연결 리스트의 끝에 도달할 때 까지)current 노드의 n..