优势洗牌(田忌赛马)
思路
- 将nums1(自己的马)进行升序排序,得到下等马->上等马的序列
- 贪心策略
- 若某个位置上自己的马比对手的马强,由于已经排过序了,已经是最下等的马了,因此使用这匹马
- 若某个位置上自己的马比对手的马弱,将该下等马放到最后的位置(对手的上等马的位置)
- 由于nums2的顺序固定(已知对手上场顺序),因此使用nums2的元素值对nums2的index进行排序,得到上场顺序(ids)
- 按照上场顺序(ids)依次写入ans数组中
代码
|
|
总结
灵活运用不对数组进行真正的排序,而是获得排序后的index的顺序这一技巧
- 原文作者:windseek
- 原文链接:https://scottlx.github.io/posts/%E4%BC%98%E5%8A%BF%E6%B4%97%E7%89%8C%E7%94%B0%E5%BF%8C%E8%B5%9B%E9%A9%AC/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。