LeetCode 2601. Prime Subtraction Operation
You are given a?0-indexed?integer array?nums
?of length?n
.
You can perform the following operation as many times as you want:
Pick an index?
i
?that you haven’t picked before, and pick a prime?p
?strictly less than?nums[i]
, then subtract?p
?from?nums[i]
.
Return?true if you can make?nums
?a strictly increasing array using the above operation and false otherwise.
A?strictly increasing array?is an array whose each element is strictly greater than its preceding element.
?
Example 1:
Input: nums = [4,9,6,10]
Output: true
Explanation:?
In the first operation: Pick i = 0 and p = 3, and then subtract 3 from nums[0],?
so that nums becomes [1,9,6,10].?
In the second operation: i = 1, p = 7, subtract 7 from nums[1],?
so nums becomes equal to [1,2,6,10].?
After the second operation, nums is sorted in strictly increasing order, so the answer is true.
Example 2:
Input: nums = [6,8,11,12]
Output: true
Explanation: Initially nums is sorted in strictly increasing order, so we don't need to make any operations.
Example 3:
Input: nums = [5,8,3]
Output: false
Explanation: It can be proven that there is no way to perform operations to make nums sorted in strictly increasing order, so the answer is false.
?
Constraints:
1 <= nums.length <= 1000
1 <= nums[i] <= 1000
nums.length == n
好尷尬啊,基本上每個(gè)函數(shù)都寫錯(cuò)過,isprime函數(shù)漏寫了1的情況,1不是質(zhì)數(shù),不是質(zhì)數(shù),不是質(zhì)數(shù)。。。。
first_numSubtract()這個(gè)函數(shù)是將第一個(gè)元素先降低到最小值,
然后剩下的元素去每次判斷是否存在num[i]-num[i-1]的質(zhì)數(shù),有的話,就將這個(gè)num[i]減去對應(yīng)的質(zhì)數(shù),
還有個(gè)checksort的函數(shù),判斷是否是嚴(yán)格遞增的,沒錯(cuò)是嚴(yán)格遞增,我以為>=就行了,不行,不行,不行,要>才行啊。。。
綜上就是題意沒理解透徹,另外就是基礎(chǔ)不扎實(shí),還需要多多鍛煉,汗顏啊。。。
Runtime:?6 ms, faster than?90.91%?of?Java?online submissions for?Prime Subtraction Operation.
Memory Usage:?42.6 MB, less than?63.64%?of?Java?online submissions for?Prime Subtraction Operation.