Giả sử chúng ta có một mảng các số nguyên dương không giảm gọi là num và một số nguyên K, chúng ta phải tìm xem mảng này có thể được chia thành một hoặc nhiều dãy con tăng dần rời rạc có độ dài ít nhất là K.
Vì vậy, nếu đầu vào giống như nums =[1,2,2,3,3,4,4], K =3, thì đầu ra sẽ là true, vì mảng này có thể được chia thành hai dãy con như [1, 2,3,4] và [2,3,4] với độ dài ít nhất là 3 mỗi cái.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
d:=một bản đồ mới
-
yêu cầu:=0
-
đối với mỗi tôi trong nums, hãy thực hiện
-
nếu tôi không ở d là khác 0, thì
-
d [i]:=1
-
-
nếu không,
-
d [i]:=d [i] + 1
-
-
req:=tối đa trong số req, d [i]
-
-
trả về true khi req * K <=size of nums
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
class Solution(object): def canDivideIntoSubsequences(self, nums, K): d = {} req = 0 for i in nums: if i not in d: d[i]=1 else: d[i]+=1 req = max(req,d[i]) return req*K<=len(nums) ob = Solution() print(ob.canDivideIntoSubsequences([1,2,2,3,3,4,4],3))
Đầu vào
[1,2,2,3,3,4,4]. 3
Đầu ra
True