old/Algorithm Solving (58) 썸네일형 리스트형 94. Binary Tree Inorder Traversal문제의 자바 해결 방법: 효율적인 알고리즘 문제 Problem_Link 문제해결방법 이진트리를 inorder로 순회하기=DFS를 사용. 문제에서 단순 루프로 푸는것도 요구하므로, while문과 재귀문의 변환능력을 물어보고 있음. 시간복잡도: O(n), 공간복잡도: O(n) https://github.com/eunhanlee/leetcode_94.BinaryTreeInorderTraversal_Solution/blob/master/README.md class Solution { public List inorderTraversal(TreeNode root) { List list = new ArrayList(); // 이진 트리를 중위 순회하여 리스트에 값을 추가하는 재귀 함수 호출 inorderRecur(root, list); // 결과 리스트 반환.. Powerfull Integer 문제의 자바 해결 방법: 효율적인 알고리즘 문제 Problem_Link 문제해결방법 모든 숫자를 hashmap에 넣으면서 카운트를 한다 hashmap의 카운트한 숫자를 Key대로 정렬한다. 최악의 경우, O(n log n)이 나옴 entrySet을 ArrayList로 하여, K이상 나온 수들중 가장 큰수를 찾는다 시간복잡도: O(n log n), 공간복잡도: O(n) https://github.com/eunhanlee/powerfullInteger/blob/master/read%20me.md class Solution { /** * 숫자별 등장 횟수를 저장하는 해시 맵을 만들고, 이 중에서 k번 이상 등장하는 가장 큰 수를 반환합니다. * 만약 k번 이상 등장하는 숫자가 여러 개인 경우, 가장 큰 수를 반환합니다. * 만약 k번 이상 등장하는 숫.. find number 문제의 자바 해결 방법: 효율적인 알고리즘 문제 Problem_Link 문제해결방법 홀수 숫자는 규칙이 있음1 3 5 7 9 11 13 15 17 19 31 33 35 37 39 51 53 55 57 59 71 73 75 77 79 91 93 95 97 99 101 103 105 107 109 위 규칙에 따라서 5번을 기점으로 반복되는 것을 알수 있습니다. 그러므로 5로 나눈 나머지수가 자리수라는것을 알수 있습니다. 각각의 자리수를 안다면 그 자리수이용해서 어떤숫자가 올지 알수 있음(1,3,5,7,9) 13번째 홀수 숫자를 예로 든다면 13에서 가장 오른쪽(1의 자리)에 있는 숫자는 3번째 입니다. 홀수 규칙에 따라서 세번째 오는 수는 5입니다. 13에서 두번째로 오른쪽에 있는 숫자(10의 자리)는 2번째 입니다. 홀수 규칙에 따라서 두번째 오는.. Maximize The Number 문제의 자바 해결 방법: 효율적인 알고리즘 문제 Problem_Link 문제해결방법 목표: 가장 뒤에 있는 1과 가장 앞에 있는 0을 서로 교환한다. 조건: 교환 횟수가 주어진 k보다 적어야 한다. StringBuilder를 써야 함: 스트링을 교환해야하므로, 가장 효율적인 방법이 StringBuilder. 가장 뒤쪽에 있는 1은 반드시 k보다 횟수가 적을때만 필요함 반복문이 끝나는 조건은 교환횟수가 k보다 큼 주어진 길이만큼 반복을 했을경우. 그러므로, 두개의 포인터가 사용됨. 첫번째 포인터(i)는 반복해서 돌면서 0을 찾고, 두번쨰 포인터(lastOneIndex) 는 가장 뒤에 있는 1을 찾음. 두 포인터가 다 찾았다면 이를 교환하는데, 이 교환횟수가 K릏 넘는다면 반복을 중지함. 시간복잡도: O(n), 공간복잡도: O(n) class Sol.. Wave Array문제의 자바 해결 방법: 효율적인 알고리즘 문제 Problem_Link 문제해결방법 주어진 값: 정렬된 어레이 조건: 웨이브 타듯 크고작고 크게 정렬 조건2: lexicographically smallest. 주어진 값과 조건의 관계를 생각해보았을떄, 조건자체를 검색할 필요없이 정렬된 어레이를 스왑해서 풀면 됨. lexical이라는 뜻은 compareTo를 사용하라는 뜻임. compareTo는 유니코드를 기반으로 비교하기 떄문. 즉, 따로 무언가를 할필요가 없이. 정렬을 1/2만큼 돌면서 짝수의 이전 값과 스왑하면 됨. 시간복잡도: O(n), 공간복잡도: O(1) class Solution { public static void convertToWave(int n, int[] a) { // 인덱스를 1부터 시작하고 2씩 증가시키면서 // 현재 요소.. Geekina Loves Order 문제의 자바 솔루션 문제 the-easiest-ever-coding-challenge-4 | Practice | GeeksforGeeks 문제 해결 방법 Geekina는 문자열 내의 모든 문자가 ASCII 값에 따라 오름차순으로 정렬되어 있으면 해당 문자열을 좋아합니다. Geekina는 문자열 내의 문자 중 더 낮은 ASCII 값의 문자가 더 높은 ASCII 값의 문자 뒤에 나온다면 해당 문자열을 싫어합니다. 모든 문자가 ASCII 값에 따라 오름차순으로 정렬되어 있으면 1을 리턴합니다. 이전문자가 현재의 문자보다 ASCII값이 높으면 0을 리턴합니다. 모든 이전문자가 현재의 문자보다 ASCII값이 낮으면 1을 리턴합니다. Github Link https://github.com/eunhanlee/GFG_GeekinaLove.. Add Strings 문제풀이 문제 Problem_Link 내 답 1시간 제한 인터넷 사용 안함 내 코드 class Solution { public String addStrings(String num1, String num2) { StringBuilder sb = new StringBuilder(); int num1Leng = num1.length() - 1; int num2Leng = num2.length() - 1; int round = 0; for (int i = Math.max(num1.length(), num2.length()) - 1; i > -1; --i) { if (num1Leng < 0) { sb.append(String.valueOf(((num2.charAt(num2Leng) - 48) + round)%10)); i.. Remove Duplicates from Sorted Array 문제풀이 문제 Problem_Link 내 답 1시간 제한 인터넷 사용 안함 내 코드 class Solution { public int removeDuplicates(int[] nums) { if(nums==null ||nums.length==0) return 0; int temp = -101; int count=0; int pos=0; for(int i=0;i 이전 1 ··· 4 5 6 7 8 다음 목록 더보기