<p/><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/1648392-feeca81d7d5799d9.jpg" contenteditable="false" img-data="{"format":"jpeg","size":190512,"height":900,"width":1600}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
</p><p>
</p><p>
</p><h1 id="rlb15">题解</h1><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/1648392-a9264953f0d7b36d.jpg" contenteditable="false" img-data="{"format":"jpeg","size":68767,"height":802,"width":1344}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><h2 id="xvfb7">Swift</h2><blockquote><p>class TopVotedCandidate {
// 预排序好的结果
var tops = Int
// 投票的结果
var voteCounts = Int: Int
// 传入的时间
var times: [Int]!
init(_ persons: [Int], _ times: [Int]) {
self.times = times
// 预插值
voteCounts[-1] = -1
var top = -1
for p in persons {
voteCounts[p, default: 0] += 1
if voteCounts[p]! >= voteCounts[top]! {
top = p
}
tops.append(top)
}
}
func q(_ t: Int) -> Int {
var left = 0, right = times.count - 1
while left < right {
let mid = left + (right - left + 1) / 2
if times[mid] <= t {
left = mid
} else {
right = mid - 1
}
}
return tops[left]
}
}
let obj = TopVotedCandidate([0, 1, 1, 0, 0, 1, 0], [0, 5, 10, 15, 20, 25, 30])
print(obj.q(3))
print(obj.q(12))
print(obj.q(25))
print(obj.q(15))
print(obj.q(24))
print(obj.q(8))
</p></blockquote><p>
</p><h2 id="m0fct">Dart</h2><blockquote><p>class TopVotedCandidate {
// 预排序好的结果
var tops = <int>[];
// 投票的结果
var voteCounts = Map<int, int>();
// 传入的时间
late List<int> times;
TopVotedCandidate(List<int> persons, List<int> times) {
this.times = times;
// 预插值
voteCounts[-1] = -1;
int top = -1;
for (var p in persons) {
voteCounts[p] = (voteCounts[p] ?? 0) + 1;
if (voteCounts[p]! >= voteCounts[top]!) {
top = p;
}
tops.add(top);
}
}
int q(int t) {
var left = 0, right = times.length - 1;
while (left < right) {
var mid = (left + (right - left + 1) / 2).toInt();
if (times[mid] <= t) {
left = mid;
} else {
right = mid - 1;
}
}
return tops[left];
}
}
void main() {
var obj =
TopVotedCandidate([0, 1, 1, 0, 0, 1, 0], [0, 5, 10, 15, 20, 25, 30]);
print(obj.q(3));
print(obj.q(12));
print(obj.q(25));
print(obj.q(15));
print(obj.q(24));
print(obj.q(8));
}
</p></blockquote><p>
</p><p>
</p>
「算法」911. 在线选举
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 不支持上传文件,所以就复制过来了。作者信息什么的都没删。对前端基本属于一窍不通,所以没有任何修改,反正用着没问题就...
- 找到fullcalendar.js, 找到代码为 isRTL:false,这句话 输入以下几句 monthName...
- 基于官方微擎v2.7.5版本的开放源代码,再结合微擎开发文档,收集和整理了1602个函数,包含了整个微擎系统的所有...