題目
給你一個整數數組 nums 和一個整數 k 。
每一步操作中,你需要從數組中選出和為 k 的兩個整數,并將它們移出數組。
返回你可以對數組執行的最大操作數。
示例 1:
輸入:nums = [1,2,3,4], k = 5
輸出:2
解釋:開始時 nums = [1,2,3,4]:
- 移出 1 和 4 ,之后 nums = [2,3]
- 移出 2 和 3 ,之后 nums = []
不再有和為 5 的數對,因此最多執行 2 次操作。
示例 2:
輸入:nums = [3,1,3,4,3], k = 6
輸出:1
解釋:開始時 nums = [3,1,3,4,3]:
- 移出前兩個 3 ,之后nums = [1,4,3]
不再有和為 6 的數對,因此最多執行 1 次操作。
提示:
1 <= nums.length <= 105
1 <= nums[i] <= 109
1 <= k <= 109
解決思路
其實就是看有幾對和為K 那這樣的話 用Map吧 記錄每個數的個數 然后計算
has 確實算是個方法 不用排序了
解決方法
fun maxOperations(nums: IntArray, k: Int): Int {var map = mutableMapOf<Int, Int>()var result = 0nums.forEach {map[it] = map.getOrDefault(it, 0) + 1}nums.forEach {if (it == k - it && map[it]!! < 2) {return@forEach}if (map.contains(k - it) && map[k - it]!! >= 1&& map[it]!! >= 1) {result++map[it] = map[it]!! - 1map[k - it] = map[k - it]!! - 1}}return result}
總結
短視頻興起了,我卻錯過了我那個最無畏,最不要臉的年代。
別搞那么沒用的,包括但不限于:無用的言論、無用的抱怨、無用的脾氣、無用的垂頭喪氣 問問自己 這個事情 你反感有用嗎?這是工作,你怎么樣都要做!