LeetCodeのEasy問題を解いて勉強するSwift Last Stone Weight編



LeetCodeのEasy問題を解いて勉強するSwift Last Stone Weight編

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

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

書いている人のレベル感

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

LeetCode

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

前回
LeetCodeのEasy問題を解いて勉強するSwift Invert Binary Tree編

Last Stone Weight

Last Stone Weight
与えられた数値が入っている配列の中に入っている最も大きい値と2番目に大きい値をぶつける。
ぶつける時に値がイコールなら両方消える。値が異なる場合には両方とも削除し、最も大きい値から2番目に大きい値を引いた値を配列に追加する。
これを繰り返し、配列内に値が1個、または0個になるまで繰り返す。1個
残った場合はその値を戻り値として返却し、0個の場合は0を返す。

class Solution {
   func lastStoneWeight(_ stones: [Int]) -> Int {
       var stones = stones.sorted(by: >)
       while stones.count > 1{
           let smaller_stone = stones.remove(at: 1)
           stones[0] -= smaller_stone
           stones = stones.sorted(by: >)
       }
       return stones[0]
   }
}


stones.sorted(by: >)

stones.sorted(by: >)で降順にソート。
stones.sorted()で昇順にソート。

学べたこと

Swiftでのsortedの使い方

コメント

このブログの人気の投稿

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

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

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