Leetcode 30 천도위, Week 2 Day 5, Last Stone Weight, in Swift

6085 단어 Swiftleetcode
자료 상당한 연산법 : Backtracking
  • 도전 페이지 - h tps : // / ㅇ t 여기. 코 m / 에 xp ㄉ 레 / 짱 게 / rd / 30-이다 y ぇ t 굿 g 짱 게 / 529 / 우에 k 2 / 3297 /
  • 제목 원 페이지 - 1046. Last Stone Weight

  • 사전 배서



    유간도요 找 최대兩個值, 於是就先降冪排序了.

    Heap 호마 번 XDDDDD



    Swift 不想其他語言有 heapq (python) 可以用, 實作 max heap後續再來做整套 heap 看看.

    Backtracking



    요 backtracking 的話就是要先訂下遞迴的結束條件.
  • 결속 조건 ① - 공진열적 화회전 0
  • 결속 조건 ② - 只有一個 원소적 話回傳 해당 원소

  • 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 위진열 길이.
  • 시간 복도: O(nlogn + n^2) → O(n^2)
  • 배서처용 리프 O(nlogn)
  • 주방 과정용 O(n), 단면 포료 找插入 위치용 O(n) . 애연불원의, 단是應当該是 O(n^2) .

  • 공간 복도: O(n)
  • 배서 후용 로프 O(n)
  • 주방 과정 지소가가이산 3n (first, second, difference) ,간화 후시 O(n)


  • 집행 결과


    Runtime: 0 ms (beats 100.00%)
    Memory Usage: 21.4 MB
    

    其他覺得 유취적 해



  • @nalydadad - h tps : // / ㅇ t 여기. 이 m / p 로b ㎇ ms / ぁ st-s와
  • 좋은 웹페이지 즐겨찾기