您的位置:首页 > 移动开发 > Swift

[Swift]LeetCode1121. 将数组分成几个递增序列 | Divide Array Into Increasing Sequences

2019-07-13 10:00 1356 查看
原文链接:http://www.cnblogs.com/strengthen/p/11179565.html

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(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. 1 <= nums.length <= 10^5
  2. 1 <= K <= nums.length
  3. 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. 1 <= nums.length <= 10^5
  2. 1 <= K <= nums.length
  3. 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 }

 

转载于:https://www.cnblogs.com/strengthen/p/11179565.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐