1. 程式人生 > 其它 >Js 之aos.js頁面滾動動畫

Js 之aos.js頁面滾動動畫

題目如下:

You are given an integer arraynumsand an integerk.

In one operation, you can pick two numbers from the array whose sum equalskand remove them from the array.

Returnthe maximum number of operations you can perform on the array.

Example 1:

Input: nums = [1,2,3,4], k = 5
Output: 2
Explanation: Starting with nums = [1,2,3,4]:
- Remove numbers 1 and 4, then nums = [2,3]
- Remove numbers 2 and 3, then nums = []
There are no more pairs that sum up to 5, hence a total of 2 operations.

Example 2:

Input: nums = [3,1,3,4,3], k = 6
Output: 1
Explanation: Starting with nums = [3,1,3,4,3]:
- Remove the first two 3's, then nums = [1,4,3]
There are no more pairs that sum up to 6, hence a total of 1 operation.

Constraints:

  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 109
  • 1 <= k <= 109

解題思路:首先統計出每個num出現的次數,然後求num和k-num出現次數的較小值,即為這對組合可操作的次數,注意要考慮 num = k- num的情況。

程式碼如下:

class Solution(object):
    def maxOperations(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: int
        """
        dic = {}
        res = 0
        for num in nums:
            dic[num] 
= dic.setdefault(num,0) + 1 for key in dic.iterkeys(): if dic[key] <= 0:continue elif k - key == key: res += dic[key]/2 dic[key] = dic[key] % 2 elif k - key in dic: pair = min(dic[key],dic[k-key]) res += pair dic[key] -= pair dic[k-key] -= pair return res