-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
思路:
像不像田忌赛马?? 以a最小的牌去对b最大的牌. 先将A数组从小到大排序, B数组也是从小到大排序(但是要保存B原来数组的对应顺序). 然后一一比较A和B, 若大于, 直接取出来, 放在B原来数组的对应位置. 若小于或等于, 则取A数组的最后一个A[end]放入B对应的位置.
代码: (代码最直观)
var advantageCount = function(nums1, nums2) {
let temp2 = nums2.map((item, index) => {
return {
value: item,
originIndex: index
}
})
temp2.sort((a, b) => {
return b.value - a.value
})
nums1.sort((a, b) => b - a)
let result = new Array(nums1.length).fill(0)
// start对应nums1现有的最优马位置, end对应nums1现有的最劣马位置. i则是nums2数组的迭代索引.
for (let i = 0, start = 0, end = nums1.length - 1; i < temp2.length; i++) {
let value1 = nums1[start]
let value2 = temp2[i].value
let index = temp2[i].originIndex
if (value1 > value2) {
result[index] = value1
start++
} else {
result[index] = nums1[end]
end--
}
}
return result
};
Metadata
Metadata
Assignees
Labels
No labels