diff --git a/merge-intervals/hyeri0903.java b/merge-intervals/hyeri0903.java new file mode 100644 index 0000000000..e14d30afad --- /dev/null +++ b/merge-intervals/hyeri0903.java @@ -0,0 +1,40 @@ +class Solution { + public int[][] merge(int[][] intervals) { + /** + 1.prob: overlapping 되는 곳을 merge 해서 return + 2.constraints + - len(intervalse) min = 1, max= 10000 + - start, end value min = 0, max = 10000 + 3.solution + - sorting array -> merge overlapping values + time: O(n log n) + */ + + int n = intervals.length; + Arrays.sort(intervals, (a,b) -> Integer.compare(a[0], b[0])); + + List answer = new ArrayList<>(); + int start = intervals[0][0]; + int end = intervals[0][1]; + + for(int i = 1; i < n; i++) { + int nextStart = intervals[i][0]; + int nextEnd = intervals[i][1]; + + //overlap + if(end >= nextStart) { + end = Math.max(end, nextEnd); + } else { + answer.add(new int[]{start, end}); + + start = nextStart; + end = nextEnd; + + } + } + + //last intervals + answer.add(new int[]{start, end}); + return answer.toArray(new int[answer.size()][]); + } +} diff --git a/missing-number/hyeri0903.java b/missing-number/hyeri0903.java new file mode 100644 index 0000000000..14f7efa416 --- /dev/null +++ b/missing-number/hyeri0903.java @@ -0,0 +1,30 @@ +class Solution { + public int missingNumber(int[] nums) { + /** + 1.distinc number 로 이루어진 0~n 까지의 배열 중 missing number return + 2.constraints + - n 최소 = 1, 최대 = 10000 + - 배열길이 min=0, max=n + 3.solutions + - sorting 하고 for문으로 missing num check. time: O(n log n), space: O(1) + - 전체 sum - 실제 sum + */ + + Arrays.sort(nums); + int n = nums.length; + int answer = 0; + int i = 0; + + for(i = 0; i < n; i++) { + if(nums[i] != i) { + answer = i; + return answer; + } + } + if(i == n) { + answer = n; + return answer; + } + return answer; + } +}