Problem: 1679. K 和数对的最大数目
思路
首先将数组排序方便采用双指针进行匹配,如果发现两个数之和大于k,则j--,否则i++,如果两数相加等于k,则两个指针同时移动,最后使用变量ans统计结果即可。
解题过程
这些方法具体怎么运用?
复杂度
时间复杂度: O(nlogn)
空间复杂度: O(1)
class Solution {
public int maxOperations(int[] nums, int k) {
Arrays.sort(nums);
int i = 0, j = nums.length - 1;
int ans = 0;
while (i < j) {
if (nums[i] + nums[j] < k){
i++;
} else if (nums[i] + nums[j] > k){
j--;
} else {
ans++;
i++;
j--;
}
}
return ans;
}
}