[Swift]LeetCode1121. 将数组分成几个递增序列 | Divide Array Into Increasing Sequences
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/11179565.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
Given a non-decreasing array of positive integers nums and an integer K, find out if this array can be divided into one or more disjoint increasing subsequences of length at least K.
Example 1:
Input: nums = [1,2,2,3,3,4,4], K = 3
Output: true
Explanation:
The array can be divided into the two subsequences [1,2,3,4] and [2,3,4] with lengths at least 3 each.
Example 2:
Input: nums = [5,6,6,7,8], K = 3
Output: false
Explanation:
There is no way to divide the array using the conditions required.
Note:
1 <= nums.length <= 10^51 <= K <= nums.length1 <= nums[i] <= 10^5
给你一个 非递减 的正整数数组 nums 和整数 K,判断该数组是否可以被分成一个或几个 长度至少 为 K 的 不相交的递增子序列。
示例 1:
输入:nums = [1,2,2,3,3,4,4], K = 3 输出:true 解释: 该数组可以分成两个子序列 [1,2,3,4] 和 [2,3,4],每个子序列的长度都至少是 3。
示例 2:
输入:nums = [5,6,6,7,8], K = 3 输出:false 解释: 没有办法根据条件来划分数组。
提示:
1 <= nums.length <= 10^51 <= K <= nums.length1 <= nums[i] <= 10^5
2228ms
1 class Solution { 2 func canDivideIntoSubsequences(_ nums: [Int], _ K: Int) -> Bool { 3 var cal:Int = 0 4 var a:[Int:Int] = [Int:Int]() 5 for i in 0..<nums.count 6 { 7 a[nums[i],default:0] += 1 8 if cal < a[nums[i],default:0] 9 { 10 cal = a[nums[i],default:0] 11 } 12 } 13 return cal * K <= nums.count 14 } 15 }

浙公网安备 33010602011771号