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の使い方
コメント
コメントを投稿