diff --git a/find-minimum-in-rotated-sorted-array/mintheon.java b/find-minimum-in-rotated-sorted-array/mintheon.java new file mode 100644 index 000000000..ad0b69561 --- /dev/null +++ b/find-minimum-in-rotated-sorted-array/mintheon.java @@ -0,0 +1,13 @@ +class Solution { + // 시간복잡도: O(n) + // 공간복잡도: O(1) + public int findMin(int[] nums) { + for(int i = 1; i < nums.length; i++) { + if(nums[i - 1] > nums[i]) { + return nums[i]; + } + } + + return nums[0]; + } +} diff --git a/linked-list-cycle/mintheon.java b/linked-list-cycle/mintheon.java new file mode 100644 index 000000000..feb7a1899 --- /dev/null +++ b/linked-list-cycle/mintheon.java @@ -0,0 +1,28 @@ +/** + * Definition for singly-linked list. + * class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { + * val = x; + * next = null; + * } + * } + */ +//시간복잡도: O(n) +//공간복잡도: O(1) +public class Solution { + public boolean hasCycle(ListNode head) { + ListNode slow = head; + ListNode fast = head; + + while(fast != null && fast.next != null) { + slow = slow.next; + fast = fast.next.next; + + if(slow == fast) return true; + } + + return false; + } +} diff --git a/maximum-product-subarray/mintheon.java b/maximum-product-subarray/mintheon.java new file mode 100644 index 000000000..d6cdc86c9 --- /dev/null +++ b/maximum-product-subarray/mintheon.java @@ -0,0 +1,26 @@ +class Solution { + //시간복잡도: O(n) + //공간복잡도: O(n) + public int maxProduct(int[] nums) { + int[] maxValue = new int[nums.length]; + int[] minValue = new int[nums.length]; + + maxValue[0] = nums[0]; + minValue[0] = nums[0]; + + for(int i = 1; i < nums.length; i++) { + int value1 = maxValue[i - 1] * nums[i]; + int value2 = minValue[i - 1] * nums[i]; + + maxValue[i] = Math.max(Math.max(value1, value2), nums[i]); + minValue[i] = Math.min(Math.min(value1, value2), nums[i]); + } + + int result = Integer.MIN_VALUE; + for(int i = 0; i < nums.length; i++) { + result = Math.max(result, maxValue[i]); + } + + return result; + } +}