题目
输入:nums = [-1,-2,3,4], k = 3 输出:[-1,3,4] 解释: 子序列有最大和:-1 + 3 + 4 = 6 。 示例 3:
输入:nums = [3,4,3,3], k = 2 输出:[3,4] 解释: 子序列有最大和:3 + 4 = 7 。 另一个可行的子序列为 [4, 3] 。
提示:
1 <= nums.length <= 1000 -105 <= nums[i] <= 105 1 <= k <= nums.length
来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/find-subsequence-of-length-k-with-the-largest-sum 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解决方法
fun maxSubsequence(nums: IntArray, k: Int): IntArray {
var pair = Array(nums.size) { Array(2) { 0 } }
nums.forEachIndexed { index, i ->
run {
pair[index][0] = nums[index]
pair[index][1] = index
}
}
Arrays.sort(pair,0,pair.size) { o1, o2 -> if (o1[0] > o2[0]) -1 else 1 }
Arrays.sort(pair,0,k) { o1, o2 -> if (o1[1] > o2[1]) 1 else -1 }
var result = IntArray(k)
for (i in 0 until k){
result[i] = pair[i][0]
}
return result
}
总结
1.此题用map 不合适,因为有重复数字,但是可以用二维数组进行辅助 2.不要小看此题,我当时看了题解才在限定时间内做出来
|