diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 060. \345\207\272\347\216\260\351\242\221\347\216\207\346\234\200\351\253\230\347\232\204 k \344\270\252\346\225\260\345\255\227/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 060. \345\207\272\347\216\260\351\242\221\347\216\207\346\234\200\351\253\230\347\232\204 k \344\270\252\346\225\260\345\255\227/README.md" index bb48542187c42..73dc2ba798415 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 060. \345\207\272\347\216\260\351\242\221\347\216\207\346\234\200\351\253\230\347\232\204 k \344\270\252\346\225\260\345\255\227/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 060. \345\207\272\347\216\260\351\242\221\347\216\207\346\234\200\351\253\230\347\232\204 k \344\270\252\346\225\260\345\255\227/README.md" @@ -198,6 +198,47 @@ impl Solution { } ``` +#### Swift + +```swift +import HeapModule + +class Solution { + func topKFrequent(_ nums: [Int], _ k: Int) -> [Int] { + var frequency: [Int: Int] = [:] + for num in nums { + frequency[num, default: 0] += 1 + } + + var freqHeap = Heap() + for (key, value) in frequency { + freqHeap.insert(.init(val: key, freq: value)) + if freqHeap.count > k { + freqHeap.removeMin() + } + } + var ans = [Int]() + while let element = freqHeap.popMax() { + ans.append(element.val) + } + return ans + } +} + +struct FreqElement: Comparable { + let val: Int + let freq: Int + + static func < (lhs: FreqElement, rhs: FreqElement) -> Bool { + lhs.freq < rhs.freq + } + + static func == (lhs: FreqElement, rhs: FreqElement) -> Bool { + lhs.freq == rhs.freq + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 060. \345\207\272\347\216\260\351\242\221\347\216\207\346\234\200\351\253\230\347\232\204 k \344\270\252\346\225\260\345\255\227/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 060. \345\207\272\347\216\260\351\242\221\347\216\207\346\234\200\351\253\230\347\232\204 k \344\270\252\346\225\260\345\255\227/Solution.swift" new file mode 100644 index 0000000000000..1a67b4e79fe9b --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 060. \345\207\272\347\216\260\351\242\221\347\216\207\346\234\200\351\253\230\347\232\204 k \344\270\252\346\225\260\345\255\227/Solution.swift" @@ -0,0 +1,36 @@ +import HeapModule + +class Solution { + func topKFrequent(_ nums: [Int], _ k: Int) -> [Int] { + var frequency: [Int: Int] = [:] + for num in nums { + frequency[num, default: 0] += 1 + } + + var freqHeap = Heap() + for (key, value) in frequency { + freqHeap.insert(.init(val: key, freq: value)) + if freqHeap.count > k { + freqHeap.removeMin() + } + } + var ans = [Int]() + while let element = freqHeap.popMax() { + ans.append(element.val) + } + return ans + } +} + +struct FreqElement: Comparable { + let val: Int + let freq: Int + + static func < (lhs: FreqElement, rhs: FreqElement) -> Bool { + lhs.freq < rhs.freq + } + + static func == (lhs: FreqElement, rhs: FreqElement) -> Bool { + lhs.freq == rhs.freq + } +}