日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 1121. 将数组分成几个递增序列

發布時間:2024/7/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 1121. 将数组分成几个递增序列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

給你一個 非遞減 的正整數數組 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

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/divide-array-into-increasing-sequences
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

  • 題目要求每個子序列嚴格遞增,所以每個子序列里沒有相同的值
  • 找出數組里出現次數最多的,c 次,這個數分給 c 個子序列
  • 每個子序列長度至少為 K,那么必須滿足 c?K<=nc*K <= nc?K<=n 數組長度
class Solution { public:bool canDivideIntoSubsequences(vector<int>& nums, int K) {unordered_map<int,int> count;int i, maxcount = 0, n = nums.size();for(i = 0; i < n; ++i){count[nums[i]]++;maxcount = max(maxcount, count[nums[i]]);}return maxcount*K <= n;} };

584 ms 103.7 MB

  • 數組有序,不需要哈希map計數,見官方答案
class Solution { public:bool canDivideIntoSubsequences(vector<int>& nums, int K) {int pre = nums[0], cnt = 0;for (int n : nums) {if (n == pre)++cnt;else {pre = n;cnt = 1;}if (cnt * K > nums.size())return false;}return true;} };

284 ms 69.2 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的LeetCode 1121. 将数组分成几个递增序列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。