[LeetCode 75/Linked List] 2095 - Delete the Middle Node of a Linked List / 328 - Odd Even Linked List / 206 - Reverse Linked List / 2130 - Maximum Twin Sum of a Linked List (Java)
·
✏️/LeetCode
2095 - Delete the Middle Node of a Linked List풀이길이 n인 리스트에서 인덱스 ⌊n/2⌋ (0-based) 노드 삭제ex. [1, 3, 4, 7, 1, 2, 6] -> n = 7, ⌊7/2⌋ = 3 => 7 삭제 `head.next == null`: 노드 1개 == middle -> 삭제 => null 리스트 길이 모름 -> `fast`: 2칸씩 이동 / `slow`: 1칸씩 이동`fast`가 끝에 도달하면 `slow`는 middle에 있음(`prev`: `slow`의 이전 노드 저장)ListNode slow = head;ListNode fast = head;ListNode prev = null;while (fast != null && fast.next != null)..
[LeetCode 75/Stack] 2390 - Removing Stars From a String / 735 - Asteroid Collision / 394 - Decode String (Java)
·
✏️/LeetCode
2390 - Removing Stars From a String풀이*를 만나면 왼쪽에서 가장 가까운 문자 하나 삭제-> 마지막에 들어온 문자(LIFO) 지움 => 스택 일반 문자 -> 스택에 push* -> 스택에서 pop코드class Solution { public String removeStars(String s) { StringBuilder sb = new StringBuilder(); Stack stack = new Stack(); for (char c : s.toCharArray()) { if (c == '*') stack.pop(); else stack.push(c); } for (cha..
[LeetCode 75/Queue] 993 - Number of Recent Calls / 649 - Dota2 Senate (Java)
·
✏️/LeetCode
993 - Number of Recent Calls풀이`RecentCounter()`: 최근 요청 수 0으로 초기화`int ping(int t)`: 시간 t에 새로운 요청 추가, 지난 3000밀리초 동안 발생한 요청 수(새로운 요청 포함) 반환/ [t - 3000, t ] 범위 내에서 발생한 요청 수 반환=> 시간 t 계속 증가 -> 최근 3000ms 안에 있는 요청만 유지=> Sliding Window + Queue (새로운 요청 뒤에 추가, 오래된 요청 앞에서 제거: FIFO)Queue q; 생성자public RecentCounter() { q = new LinkedList();} `ping(int t)`: t 기준으로 지난 3000ms 안에 있는 요청 수 반환q.offer(t)[t - 3000..
[LeetCode 75/Hash Map & Set] 2215 - Find the Difference of Two Arrays / 1207 - Unique Number of Occurrences / 1657 - Determine if Two String Are Close / 2352 - Equal Row and Column Pairs (Java)
·
✏️/LeetCode
2215 - Find the Difference of Two Arrays풀이두 배열 nums1, nums2 `answer[0]`: nums1에만 있고 nums2에는 없는 값들`answer[1]:` nums2에만 있고 nums1에는 없는 값들-> 중복 없이(distinct) 반환 => `Set`코드class Solution { public List> findDifference(int[] nums1, int[] nums2) { Set set1 = new HashSet(); Set set2 = new HashSet(); for (int n : nums1) set1.add(n); for (int n : nums2) set2.add(n); Lis..
[LeetCode 75/Prefix Sum] 1732 - Find the Highest Altitude / 724 - Find Pivot Index (Java)
·
✏️/LeetCode
1732 - Find the Highest Altitude풀이시작 고도 = 0 / 현재 고도(`cur`) += `gain[i]`altitude[i + 1] = altitude[i] + gain[i]코드class Solution { public int largestAltitude(int[] gain) { int cur = 0; int max = 0; for (int g : gain) { cur += g; max = Math.max(max, cur); } return max; }}724 - Find Pivot Index풀이피벗 인덱스: 해당 인덱스 바로 왼쪽에 있는 모든 숫자의 합 == 해당 인덱..
[LeetCode 75/Sliding Window] 643 - Maximum Average Subarray 1 / 1456 - Maximum Number of Vowels in a Substring of Given Length / 1004 - Max Consecutive Ones 3 / 1493 - Longest Subarray of 1's After Deleting One Element (Java)
·
✏️/LeetCode
643 - Maximum Average Subarray 1풀이길이가 k인 연속된 부분 배열의 평균 최대-> 합이 최대여야 함 처음 k개 합 계산 -> 한 칸씩 이동하면서 새로운 값 더하고 빠지는 값 빼기`sum += nums[i]``sum -= nums[i]`코드class Solution { public double findMaxAverage(int[] nums, int k) { int n = nums.length; long sum = 0; for (int i = 0; i 1456 - Maximum Number of Vowels in a Substring of Given Length풀이길이가 k인 연속된 부분 배열의 모음 개수 최대 처음 모음 개수 계산 -> ..
aeongg
빙글빙글 돌아가는 Debug 하루