File tree Expand file tree Collapse file tree 5 files changed +166
-0
lines changed
container-with-most-water
find-minimum-in-rotated-sorted-array
longest-repeating-character-replacement
longest-substring-without-repeating-characters
search-in-rotated-sorted-array Expand file tree Collapse file tree 5 files changed +166
-0
lines changed Original file line number Diff line number Diff line change
1
+ //
2
+ // 11. Container With Most Water
3
+ // https://leetcode.com/problems/container-with-most-water/description/
4
+ // Dale-Study
5
+ //
6
+ // Created by WhiteHyun on 2024/06/08.
7
+ //
8
+
9
+ class Solution {
10
+ func maxArea( _ height: [ Int ] ) -> Int {
11
+ var totalArea = 0
12
+ var left = 0
13
+ var right = height. endIndex - 1
14
+
15
+ while left < right {
16
+ let area = ( right - left) * min( height [ left] , height [ right] )
17
+ if area > totalArea {
18
+ totalArea = area
19
+ }
20
+
21
+ if height [ left] < height [ right] {
22
+ left += 1
23
+ } else {
24
+ right -= 1
25
+ }
26
+ }
27
+
28
+ return totalArea
29
+ }
30
+ }
Original file line number Diff line number Diff line change
1
+ //
2
+ // 153. Find Minimum in Rotated Sorted Array
3
+ // https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/description/
4
+ // Dale-Study
5
+ //
6
+ // Created by WhiteHyun on 2024/06/09.
7
+ //
8
+
9
+ class Solution {
10
+ func findMin( _ nums: [ Int ] ) -> Int {
11
+ var left = 0
12
+ var right = nums. count - 1
13
+ while left < right {
14
+ let mid = ( left + right) >> 1
15
+
16
+ if nums [ mid] > nums [ right] {
17
+ left = mid + 1
18
+ } else {
19
+ right = mid
20
+ }
21
+ }
22
+
23
+ return nums [ left]
24
+ }
25
+ }
Original file line number Diff line number Diff line change
1
+ //
2
+ // 424. Longest Repeating Character Replacement
3
+ // https://leetcode.com/problems/longest-repeating-character-replacement/description/
4
+ // Dale-Study
5
+ //
6
+ // Created by WhiteHyun on 2024/06/08.
7
+ //
8
+
9
+ final class Solution {
10
+ func characterReplacement( _ s: String , _ k: Int ) -> Int {
11
+ var maxFrequency = 0
12
+ var i = 0
13
+ var counter : [ Character : Int ] = [ : ]
14
+ let array = Array ( s)
15
+
16
+ for index in array. indices {
17
+ counter [ array [ index] , default: 0 ] += 1
18
+ if maxFrequency < counter [ array [ index] ] ! {
19
+ maxFrequency = counter [ array [ index] ] !
20
+ }
21
+
22
+ if index - i + 1 > maxFrequency + k {
23
+ counter [ array [ i] ] ! -= 1
24
+ i += 1
25
+ }
26
+ }
27
+
28
+ return array. count - i
29
+ }
30
+ }
Original file line number Diff line number Diff line change
1
+ //
2
+ // 3. Longest Substring Without Repeating Characters
3
+ // https://leetcode.com/problems/longest-substring-without-repeating-characters/description/
4
+ // Dale-Study
5
+ //
6
+ // Created by WhiteHyun on 2024/06/08.
7
+ //
8
+
9
+ class Solution {
10
+ func lengthOfLongestSubstring( _ s: String ) -> Int {
11
+ var longest : Int = . min
12
+ let array = Array ( s)
13
+
14
+ var set : Set < Character > = [ ]
15
+ var startIndex = 0
16
+ for index in array. indices {
17
+ if set. contains ( array [ index] ) == false {
18
+ set. insert ( array [ index] )
19
+ continue
20
+ }
21
+
22
+ if longest < index - startIndex {
23
+ longest = index - startIndex
24
+ }
25
+
26
+ while array [ startIndex] != array [ index] {
27
+ set. remove ( array [ startIndex] )
28
+ startIndex += 1
29
+ }
30
+ startIndex += 1
31
+ }
32
+
33
+ if longest < array. endIndex - startIndex {
34
+ longest = array. endIndex - startIndex
35
+ }
36
+
37
+
38
+ return longest
39
+ }
40
+ }
Original file line number Diff line number Diff line change
1
+ //
2
+ // 33. Search in Rotated Sorted Array
3
+ // https://leetcode.com/problems/search-in-rotated-sorted-array/description/
4
+ // Dale-Study
5
+ //
6
+ // Created by WhiteHyun on 2024/06/10.
7
+ //
8
+
9
+ final class Solution {
10
+ func search( _ nums: [ Int ] , _ target: Int ) -> Int {
11
+ guard nums. count != 1
12
+ else {
13
+ return nums [ 0 ] == target ? 0 : - 1
14
+ }
15
+
16
+ var left = 0
17
+ var right = nums. count - 1
18
+
19
+ while left <= right {
20
+ let mid = ( left + right) >> 1
21
+
22
+ if nums [ mid] == target { return mid }
23
+
24
+ if nums [ left] <= nums [ mid] {
25
+ if target > nums [ mid] || target < nums [ left] {
26
+ left = mid + 1
27
+ } else {
28
+ right = mid - 1
29
+ }
30
+ } else {
31
+ if target < nums [ mid] || target > nums [ right] {
32
+ right = mid - 1
33
+ } else {
34
+ left = mid + 1
35
+ }
36
+ }
37
+ }
38
+
39
+ return - 1
40
+ }
41
+ }
You can’t perform that action at this time.
0 commit comments