hello-algo/codes/swift/chapter_computational_complexity/space_complexity.swift

98 lines
2.1 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* File: space_complexity.swift
* Created Time: 2023-01-01
* Author: nuomi1 (nuomi1@qq.com)
*/
import utils
//
@discardableResult
func function() -> Int {
// do something
return 0
}
//
func constant(n: Int) {
// O(1)
let a = 0
var b = 0
let nums = Array(repeating: 0, count: 10000)
let node = ListNode(x: 0)
// O(1)
for _ in 0 ..< n {
let c = 0
}
// O(1)
for _ in 0 ..< n {
function()
}
}
// 线
func linear(n: Int) {
// n O(n)
let nums = Array(repeating: 0, count: n)
// n O(n)
let nodes = (0 ..< n).map { ListNode(x: $0) }
// n O(n)
let map = Dictionary(uniqueKeysWithValues: (0 ..< n).map { ($0, "\($0)") })
}
// 线
func linearRecur(n: Int) {
print("递归 n = \(n)")
if n == 1 {
return
}
linearRecur(n: n - 1)
}
//
func quadratic(n: Int) {
// O(n^2)
let numList = Array(repeating: Array(repeating: 0, count: n), count: n)
}
//
@discardableResult
func quadraticRecur(n: Int) -> Int {
if n <= 0 {
return 0
}
// nums n, n-1, ..., 2, 1
let nums = Array(repeating: 0, count: n)
print("递归 n = \(n) 中的 nums 长度 = \(nums.count)")
return quadraticRecur(n: n - 1)
}
//
func buildTree(n: Int) -> TreeNode? {
if n == 0 {
return nil
}
let root = TreeNode(x: 0)
root.left = buildTree(n: n - 1)
root.right = buildTree(n: n - 1)
return root
}
@main
enum SpaceComplexity {
// Driver Code
static func main() {
let n = 5
//
constant(n: n)
// 线
linear(n: n)
linearRecur(n: n)
//
quadratic(n: n)
quadraticRecur(n: n)
//
let root = buildTree(n: n)
PrintUtil.printTree(root: root)
}
}