본문 바로가기

프로그래밍/알고리즘6

[LeetCode] Top K Frequent Elements 개인풀이 문제 숫자 배열 nums과 숫자 k가 주어집니다. nums 배열에서 자주 반복되는 값을 k개 반환하도록 합니다. 순서는 상관 없습니다. 예제_1 입력: nums = [1,1,1,2,2,3], k = 2 출력: [1,2] 예제_2 입력: nums = [1], k = 1 출력: [1] 제약조건 1 count.get(n1) - count.get(n2)); // 2. keep k top frequent elements in the heap // O(N log k) k) heap.poll(); } // 3. build an output array // O(k log k) .. 2021. 5. 1.
[LeetCode] Single Number 개인풀이 문제 integer 배열이 주어집니다. 1개의 숫자를 제외하고는 2번씩 노출됩니다. 1번만 노출되는 숫자를 찾으세요. 나아가기 : O(N) 시간복잡도와 O(1)의 공간복잡도를 가질 수 있도록 해결할 수 있으면 좋습니다. 예제 1 입력 : [2,2,1] 출력 : 1 예제 2 입력 : [4,1,2,1,2] 출력 : 4 예제 3 입력 : [1] 출력 : 1 제약 조건 1 2021. 4. 28.
[LeetCode] Sqrt(x) 개인풀이 문제 양수인 Integer x가 주어질 때 x의 root 값의 정수 부분을 구하세요. 예제 1 입력 4 출력 2 2는 4의 root값 예제 2 입력 8 출력 2 8의 root값은 2.8242... 이기때문에 양의 정수 부분의 값은 2 제약조건 0 2021. 4. 21.
[LeetCode] Word Search(글자 찾기) 개인 풀이 문제 m x n 크기의 board와 문자열 하나가 주어집니다. board에서 문자열을 얻어낼 수 있다면 true 그렇지 않다면 false를 리턴하세요. board 한칸에는 하나의 문자가 들어가며 문자열은 한문자에서 한칸씩 이동하여 만들어야합니다. 또한 중복으로 접근하는것은 불가능 합니다. 예제 보드판 예제 1 입력 word = "ABCCED" 출력: true [0,0] -> [0,1] -> [0,2] -> [1,2] -> [2,2] -> [1,2]로 가능 예제 2 입력 word = "SEE" 출력: true [1,3] -> [2,3] - [2,2]로 가능 예제 3 입력 word = "ABCB" 출력: false 제한 사항 m == board.length n == board[i].length 1 2021. 4. 3.
[LeetCode] Reverse String(문자열 뒤집기) 개인 풀이 문제 문자열을 뒤집는 메서드를 작성하세요. 주어진 입력은 char 배열입니다. 단, 별도의 array를 생성하면 안되며 입력받은 메모리만을 이용하여 문제를 해결하여야합니다. 또한 char 배열의 내부에는 ascii characters로 표현가능한 문자열들만 있다고 가정합니다. 예제 1 입력 : ["h","e","l","l","o"] 출력 : ["o","l","l","e","h"] 예제 2 입력 : ["H","a","n","n","a","h"] 출력 : ["h","a","n","n","a","H"] 원본 문제 : https://leetcode.com/problems/reverse-string/ 개인 풀이 가장 간단하게 떠오르는 풀이방법은 해당 배열의 크기만큼 배열을 하나 더 생성 한 후 하나씩 거꾸로 매핑.. 2021. 3. 16.
[LeetCode] 3Sum 개인 풀이 문제 Integer로 주어지는 배열이 있습니다. 해당 배열의 요소중 3개를 선택해서 합이 0이 만들어지는 경우를 출력하세요. 중복된 경우는 한번만 출력합니다. 예제 1 입력: nums = [-1,0,1,2,-1,-4] 출력: [[-1,-1,2],[-1,0,1]] 예제 2 입력: nums = [] 출력: [] 예제 3 입력: nums = [0] 출력: [] 제약조건 nums의 길이는 0 ~ 3000까지 가능 10^5 2021. 3. 10.