diff --git a/longest-substring-without-repeating-characters/se6816.java b/longest-substring-without-repeating-characters/se6816.java new file mode 100644 index 0000000000..37eb280184 --- /dev/null +++ b/longest-substring-without-repeating-characters/se6816.java @@ -0,0 +1,37 @@ +/** + 투포인터를 이용한 방식 + 문자열 s의 길이 -> N + 시간 복잡도 : O(N) + 공간 복잡도 : O(N) + */ + +class Solution { + public int lengthOfLongestSubstring(String s) { + if(s.length()==0){ + return 0; + } + Set set =new HashSet<>(); + int start=0; + int end=0; + int maxSize=0; + int len = s.length(); + while(start < len){ + + + for(int i=end; i < len;i++){ + char ch = s.charAt(i); + if(set.contains(ch)){ + end = i; + break; + } + set.add(ch); + } + + maxSize = Math.max(maxSize, set.size()); + set.remove(s.charAt(start)); + start++; + + } + return maxSize; + } +} diff --git a/reverse-linked-list/se6816.java b/reverse-linked-list/se6816.java new file mode 100644 index 0000000000..4340696f03 --- /dev/null +++ b/reverse-linked-list/se6816.java @@ -0,0 +1,22 @@ +/** + 리스트의 길이 -> N + 시간 복잡도 : O(N) + 공간 복잡도 : O(1) +*/ +class Solution { + public ListNode reverseList(ListNode head) { + return createReverseHead(head); + } + private ListNode createReverseHead(ListNode head) { + ListNode resultHead = null; + + while (head != null) { + ListNode next = head.next; + head.next = resultHead; + resultHead = head; + head = next; + } + + return resultHead; + } +}