LeetCodeのEasy問題を解いて勉強するSwift Two Sum編



LeetCodeのEasy問題を解いて勉強するSwift Two Sum編

新しくSwiftを触ることになりそうなので

ひとまずコードを書いてみることにする。
LeetCodeのEasy問題は比較的解き方を知っている(はず)なので、Python3で書いていた部分をどのような書き方に直すのかを色々思い出しつつ試行錯誤していく。

書いている人のレベル感

Swiftビギナー。基本的な文法すらあやふやなので始めて数日レベルと言っても過言ではない。

LeetCode

お題が与えられ、その内容に合わせてコードを書き、提出して合ってるかどうかを確認できる。
問題はソフトウェアエンジニアのコーディング面接で出されたお題をそのまま引用していることがほとんど。

次回

LeetCodeのEasy問題を解いて勉強するSwift Valid Palindrome編


Two Sum

Two Sum
LeetCodeを始めた大多数の人が恐らく一番最初に解くであろう問題。

一番簡単な二重for文で書いた場合。
ただし遅い。

class Solution {
   func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
       for i in 0..<nums.count {
           for j in i+1..<nums.count{
               if nums[i] + nums[j] == target{
                   return [i,j]
               }
           }
       }
       return []
   }
}

速度を改良した書き方の場合。

class Solution {
    func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
        var seen = [Int:Int]()
        for (i,n) in nums.enumerated() {
            if let val = seen[target-n]{
                return [val,i]
            }
            seen[n] = i
        }
        return []
    }
}

学べたこと

Swiftでのfor文の書き方(for in文、for in enumerated文)
Swiftでのif文の書き方
Swiftでの辞書型の使い方

コメント

このブログの人気の投稿

Braveブラウザの同期機能をiPhoneで設定した話。

自作のChrome Extensionをインポートした時に "Invalid value for 'content_scripts[0].matches[0]': Empty path."というエラーが出たので解決した

failed: unable to get local issuer certificate (_ssl.c:1123)と出たので解決した話