当前位置:网站首页>算法--找到和最大的长度为 K 的子序列(Kotlin)

算法--找到和最大的长度为 K 的子序列(Kotlin)

2022-06-24 08:21:00 小米科技Android 研发曹新雨

题目

输入: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.不要小看此题,我当时看了题解才在限定时间内做出来

原网站

版权声明
本文为[小米科技Android 研发曹新雨]所创,转载请带上原文链接,感谢
https://caoxinyu.blog.csdn.net/article/details/125418251