博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Swift]LeetCode870. 优势洗牌 | Advantage Shuffle
阅读量:4707 次
发布时间:2019-06-10

本文共 4805 字,大约阅读时间需要 16 分钟。

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝()
➤GitHub地址:
➤原文地址:  
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

Given two arrays A and B of equal size, the advantage of A with respect to B is the number of indices i for which A[i] > B[i].

Return any permutation of A that maximizes its advantage with respect to B

Example 1:

Input: A = [2,7,11,15], B = [1,10,4,11]Output: [2,11,7,15]

Example 2:

Input: A = [12,24,8,32], B = [13,25,32,11]Output: [24,32,8,12] 

Note:

  1. 1 <= A.length = B.length <= 10000
  2. 0 <= A[i] <= 10^9
  3. 0 <= B[i] <= 10^9

给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。

返回 A 的任意排列,使其相对于 B 的优势最大化。

示例 1:

输入:A = [2,7,11,15], B = [1,10,4,11]输出:[2,11,7,15]

示例 2:

输入:A = [12,24,8,32], B = [13,25,32,11]输出:[24,32,8,12]

提示:

  1. 1 <= A.length = B.length <= 10000
  2. 0 <= A[i] <= 10^9
  3. 0 <= B[i] <= 10^9

Runtime: 552 ms
Memory Usage: 20.3 MB
1 class Solution {     2     func advantageCount(_ A: [Int], _ B: [Int]) -> [Int] { 3         var A = A 4         A.sort() 5         var n:Int = A.count 6         var res:[Int] = [Int](repeating:0,count:n) 7         var pq:[[Int]] = [[Int]]() 8         for i in 0..
val21 {22 res[idx] = A[hi]23 hi -= 124 }25 else26 {27 res[idx] = A[lo]28 lo += 129 }30 }31 return res32 }33 }

616ms

1 class Solution { 2     func advantageCount(_ A: [Int], _ B: [Int]) -> [Int] { 3         var leftArr = [Int]() 4         var ans = [Int](repeating: Int.min, count: A.count) 5         var tupleArrB = [(Int, Int)]() 6         for i in 0..
= sorteA.count { break }14 while aIndex < sorteA.count {15 let a = sorteA[aIndex]16 aIndex += 117 if a > v { ans[bi] = a; break}18 leftArr.append(a)19 }20 }21 22 for i in 0..

624ms

1 class Solution { 2     func advantageCount(_ A: [Int], _ B: [Int]) -> [Int] { 3         var res = Array(repeating: 0, count: A.count) 4  5         var A = A.sorted() 6         var i = 0, e = A.count - 1 7         for (idx, n) in B.enumerated().sorted(by: { $0.1 >= $1.1 }) { 8             if A[e] > n { 9                 res[idx] = A[e]10                 e -= 111             } else {12                 res[idx] = A[i]13                 i += 114             }15         }16         return res17     }18 }

628ms

1 class Solution { 2     func advantageCount(_ A: [Int], _ B: [Int]) -> [Int] { 3         var sorted = A.sorted(by: >) 4         var sortedB = B.enumerated().sorted { 5             $0.1 > $1.1 6         } 7         var i = 0 8         var j = sorted.count - 1 9         var result = [Int](repeating: 0, count: sorted.count)10         for b in sortedB {11             if sorted[i] > b.1 {12                 result[b.0] = sorted[i]13                 i += 114             } else {15                 result[b.0] = sorted[j]16                 j -= 117             }18         }19         return result20     }21 }

772ms

1 class Solution { 2     func advantageCount(_ A: [Int], _ B: [Int]) -> [Int] { 3         var sortedA = A.sorted(by: <) 4         let sortedB = B.enumerated().map { ($0, $1) }.sorted { $0.1 < $1.1 } 5          6         var hash = [Int:Int]() 7         sortedB.forEach { (index, b) in 8             let idx = sortedA.index(where: { $0 > b }) ?? 0 9             hash[index] = sortedA.remove(at: idx)10         }11         12         return (0 ..< B.count).map { hash[$0]! }13     }14 }

976ms

1 class Solution { 2     func advantageCount(_ A: [Int], _ B: [Int]) -> [Int] { 3         let sortedA = A.sorted() 4         let sortedB = B.sorted() 5          6         var i = 0 7         var results = [Int]() 8         var wastes = [Int]() 9         10         for b in sortedB {11             while i < sortedA.count && sortedA[i] <= b {12                 wastes.append(sortedA[i])13                 i += 114             }15             16             if i == sortedA.count {17                 results += wastes18                 break19             } else {20                 results.append(sortedA[i])21                 i += 122             }23         }24         25         var map = [Int: [Int]]()26         27         for i in 0..

7176ms

1 class Solution { 2     func advantageCount(_ A: [Int], _ B: [Int]) -> [Int] { 3         var sortedA = A.sorted(by: <) 4          5         var hash = [Int:Int]() 6          7         return B.map { b in 8             let idx = sortedA.index(where: { $0 > b }) ?? 0 9             return sortedA.remove(at: idx)10         }11     }12 }

 

转载于:https://www.cnblogs.com/strengthen/p/10598061.html

你可能感兴趣的文章
拓扑排序
查看>>
NYOJ--32--SEARCH--组合数
查看>>
gulpfile 压缩模板
查看>>
【34.14%】【BZOJ 3110】 [Zjoi2013]K大数查询
查看>>
【 henuacm2016级暑期训练-动态规划专题 A 】Cards
查看>>
第五篇:白话tornado源码之褪去模板的外衣
查看>>
设备常用框架framework
查看>>
bootstrap模态框和select2合用时input无法获取焦点(转)
查看>>
MockObject
查看>>
BZOJ4516: [Sdoi2016]生成魔咒(后缀自动机)
查看>>
查看手机已经记住的WIFI密码
查看>>
最新版IntelliJ IDEA2019 破解教程(2019.08.07-情人节更新)
查看>>
C# 两个datatable中的数据快速比较返回交集或差集
查看>>
关于oracle样例数据库emp、dept、salgrade的mysql脚本复杂查询分析
查看>>
adb shell am 的用法
查看>>
iOS10 UI教程视图和子视图的可见性
查看>>
FindChildControl与FindComponent
查看>>
中国城市json
查看>>
android下载手动下载Android SDK
查看>>
C++学习:任意合法状态下汉诺塔的移动(原创)
查看>>