From b42d8e479b43087e10f3db155ee8b2cce199def4 Mon Sep 17 00:00:00 2001 From: Lanre Adedara Date: 2024年5月31日 07:42:13 +0100 Subject: [PATCH] Swift implementation for LCOF2 013 --- .../README.md" | 30 +++++++++++++++++++ .../Solution.swift" | 25 ++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 "lcof2/345円211円221円346円214円207円 Offer II 013. 344円272円214円347円273円264円345円255円220円347円237円251円351円230円265円347円232円204円345円222円214円/Solution.swift" diff --git "a/lcof2/345円211円221円346円214円207円 Offer II 013. 344円272円214円347円273円264円345円255円220円347円237円251円351円230円265円347円232円204円345円222円214円/README.md" "b/lcof2/345円211円221円346円214円207円 Offer II 013. 344円272円214円347円273円264円345円255円220円347円237円251円351円230円265円347円232円204円345円222円214円/README.md" index 32ca8a9344f3c..2113b8e0ab836 100644 --- "a/lcof2/345円211円221円346円214円207円 Offer II 013. 344円272円214円347円273円264円345円255円220円347円237円251円351円230円265円347円232円204円345円222円214円/README.md" +++ "b/lcof2/345円211円221円346円214円207円 Offer II 013. 344円272円214円347円273円264円345円255円220円347円237円251円351円230円265円347円232円204円345円222円214円/README.md" @@ -254,6 +254,36 @@ class NumMatrix { */ ``` +#### Swift + +```swift +class NumMatrix { + private var prefixSum: [[Int]] + + init(_ matrix: [[Int]]) { + let m = matrix.count + let n = matrix[0].count + prefixSum = Array(repeating: Array(repeating: 0, count: n + 1), count: m + 1) + + for i in 1...m { + for j in 1...n { + prefixSum[i][j] = prefixSum[i - 1][j] + prefixSum[i][j - 1] - prefixSum[i - 1][j - 1] + matrix[i - 1][j - 1] + } + } + } + + func sumRegion(_ row1: Int, _ col1: Int, _ row2: Int, _ col2: Int) -> Int { + return prefixSum[row2 + 1][col2 + 1] - prefixSum[row2 + 1][col1] - prefixSum[row1][col2 + 1] + prefixSum[row1][col1] + } +} + +/** + * Your NumMatrix object will be instantiated and called as such: + * let obj = NumMatrix(matrix); + * let param_1 = obj.sumRegion(row1,col1,row2,col2); + */ +``` + diff --git "a/lcof2/345円211円221円346円214円207円 Offer II 013. 344円272円214円347円273円264円345円255円220円347円237円251円351円230円265円347円232円204円345円222円214円/Solution.swift" "b/lcof2/345円211円221円346円214円207円 Offer II 013. 344円272円214円347円273円264円345円255円220円347円237円251円351円230円265円347円232円204円345円222円214円/Solution.swift" new file mode 100644 index 0000000000000..e322fe13bc7a5 --- /dev/null +++ "b/lcof2/345円211円221円346円214円207円 Offer II 013. 344円272円214円347円273円264円345円255円220円347円237円251円351円230円265円347円232円204円345円222円214円/Solution.swift" @@ -0,0 +1,25 @@ +class NumMatrix { + private var prefixSum: [[Int]] + + init(_ matrix: [[Int]]) { + let m = matrix.count + let n = matrix[0].count + prefixSum = Array(repeating: Array(repeating: 0, count: n + 1), count: m + 1) + + for i in 1...m { + for j in 1...n { + prefixSum[i][j] = prefixSum[i - 1][j] + prefixSum[i][j - 1] - prefixSum[i - 1][j - 1] + matrix[i - 1][j - 1] + } + } + } + + func sumRegion(_ row1: Int, _ col1: Int, _ row2: Int, _ col2: Int) -> Int { + return prefixSum[row2 + 1][col2 + 1] - prefixSum[row2 + 1][col1] - prefixSum[row1][col2 + 1] + prefixSum[row1][col1] + } +} + +/** + * Your NumMatrix object will be instantiated and called as such: + * let obj = NumMatrix(matrix); + * let param_1 = obj.sumRegion(row1,col1,row2,col2); + */ \ No newline at end of file

AltStyle によって変換されたページ (->オリジナル) /