Leetcode 30 천도위, Week 2 Day 5, Last Stone Weight, in Swift
Backtracking
사전 배서
유간도요 找 최대兩個值, 於是就先降冪排序了.
Heap 호마 번 XDDDDD
Swift 不想其他語言有 heapq (python) 可以用, 實作 max heap後續再來做整套 heap 看看.
Backtracking
요 backtracking 的話就是要先訂下遞迴的結束條件.
Subroutine (자경리)적 주요 용용
취득 제 1 야마토 제 2 大數的差值,如果不是零就找到對應的位置插入.
找位置的嘗試
시과 3개 방법 ① 寞最大那側開始找 ② 寞最小那側開始找 ③ 용 binary tree 找.而由於 통상 차료 會偏小, 很快就有辦法跳離尋找的 loop, 所以後來挑 ② 定下來.
實時嘗試過後 runtime 的差別: ② (beats 100.00%) > ① (beats 48.61%) > ③ (beats 12.50%)
코드
class Solution {
func lastStoneWeight(_ stones: [Int]) -> Int {
var sortedStones = stones.sorted(by: >)
return smash(&sortedStones)
}
func smash(_ stones: inout [Int]) -> Int {
if stones.isEmpty { return 0 }
if stones.count == 1 { return stones[0] }
let first = stones.removeFirst()
let second = stones.removeFirst()
let difference = first - second
if difference > 0 {
var index = stones.count - 1
while index >= 0 {
if stones[index] >= difference {
break
}
index -= 1
}
stones.insert(difference, at: index + 1)
}
return smash(&stones)
}
}
복도 분석
여과유착청지정
n 위진열 길이.
집행 결과
Runtime: 0 ms (beats 100.00%)
Memory Usage: 21.4 MB
其他覺得 유취적 해
@nalydadad - h tps : // / ㅇ t 여기. 이 m / p 로b ㎇ ms / ぁ st-s와
Reference
이 문제에 관하여(Leetcode 30 천도위, Week 2 Day 5, Last Stone Weight, in Swift), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/vc7/items/15193e4a5eb5fb086082텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)