File tree Expand file tree Collapse file tree 4 files changed +127
-0
lines changed
longest-substring-without-repeating-characters Expand file tree Collapse file tree 4 files changed +127
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution {
2+ // Time complexity O(N)
3+ // Space complexity O(min(m,n))
4+ func lengthOfLongestSubstring( _ s: String ) -> Int {
5+ if s. isEmpty {
6+ return 0
7+ }
8+ var maxLength = 0
9+ var startIndex = 0
10+ var charSet : Set < Character > = [ ]
11+ let charArray = Array ( s)
12+
13+ for right in 0 ..< charArray. count {
14+ while charSet. contains ( charArray [ right] ) {
15+ charSet. remove ( charArray [ startIndex] )
16+ startIndex += 1
17+ }
18+
19+ charSet. insert ( charArray [ right] )
20+ maxLength = max ( maxLength, right - startIndex + 1 )
21+ }
22+
23+ return maxLength
24+ }
25+ }
26+
Original file line number Diff line number Diff line change 1+ public class ListNode {
2+ public var val : Int
3+ public var next : ListNode ?
4+ public init ( ) { self . val = 0 ; self . next = nil ; }
5+ public init ( _ val: Int ) { self . val = val; self . next = nil ; }
6+ public init ( _ val: Int , _ next: ListNode ? ) { self . val = val; self . next = next; }
7+ }
8+
9+ class Solution {
10+ // Time complexity O(n)
11+ // Space complexity O(1)
12+ func reverseList( _ head: ListNode ? ) -> ListNode ? {
13+ var reverseList : ListNode ? = nil
14+ var currentHead = head
15+ while let node = currentHead {
16+ currentHead = node. next
17+ node. next = reverseList
18+ reverseList = node
19+ }
20+ return reverseList
21+ }
22+ }
23+
Original file line number Diff line number Diff line change 1+ class Solution {
2+ // Time complexity O(MN)
3+ // Space complexity O(1)
4+ func setZeroes( _ matrix: inout [ [ Int ] ] ) {
5+ var firstRowHasZero = false
6+ var firstColHasZero = false
7+
8+ for col in 0 ..< matrix [ 0 ] . count {
9+ if matrix [ 0 ] [ col] == 0 {
10+ firstRowHasZero = true
11+ break
12+ }
13+ }
14+
15+ for row in 0 ..< matrix. count {
16+ if matrix [ row] [ 0 ] == 0 {
17+ firstColHasZero = true
18+ break
19+ }
20+ }
21+
22+ // marking
23+ for row in 0 ..< matrix. count {
24+ for col in 0 ..< matrix [ row] . count {
25+ if matrix [ row] [ col] == 0 {
26+ matrix [ row] [ 0 ] = 0
27+ matrix [ 0 ] [ col] = 0
28+ }
29+ }
30+ }
31+
32+ // row
33+ for row in 1 ..< matrix. count {
34+ if matrix [ row] [ 0 ] == 0 {
35+ for col in 0 ..< matrix [ row] . count {
36+ matrix [ row] [ col] = 0
37+ }
38+ }
39+ }
40+
41+ // column
42+ for col in 1 ..< matrix [ 0 ] . count {
43+ if matrix [ 0 ] [ col] == 0 {
44+ for row in 0 ..< matrix. count {
45+ matrix [ row] [ col] = 0
46+ }
47+ }
48+ }
49+
50+ if firstRowHasZero {
51+ for col in 0 ..< matrix [ 0 ] . count {
52+ matrix [ 0 ] [ col] = 0
53+ }
54+ }
55+
56+ if firstColHasZero {
57+ for row in 0 ..< matrix. count {
58+ matrix [ row] [ 0 ] = 0
59+ }
60+ }
61+ }
62+ }
63+
Original file line number Diff line number Diff line change 1+ class Solution {
2+ // Time complexity O(MN)
3+ // Space complexity O(MN)
4+ func uniquePaths( _ m: Int , _ n: Int ) -> Int {
5+ let column = Array ( repeating: 1 , count: n)
6+ var grid : [ [ Int ] ] = Array ( repeating: column, count: m)
7+ for i in 1 ..< m {
8+ for j in 1 ..< n {
9+ grid [ i] [ j] = grid [ i - 1 ] [ j] + grid[ i] [ j - 1 ]
10+ }
11+ }
12+ return grid. last!. last!
13+ }
14+ }
15+
You can’t perform that action at this time.
0 commit comments