[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^5
1 <= K <= nums.length
1 <= 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^5
1 <= K <= nums.length
1 <= 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 }