给你一个整数数组 nums 和一个整数 k 。
每一步操作中,你需要从数组中选出和为 k 的两个整数,并将它们移出数组。
返回你可以对数组执行的最大操作数。
来源:力扣(LeetCode) 链接:leetcode.cn/problems/ma…
/**
* 1. 对数组进行排序;
* 2. 使用双指针,最左侧和最右层相加,然后与k相比较:
* 1、如果两个数相等,则count + 1;
* 2、如果k > sum,则sum需要增大,left++;
* 3、如果k > i,则sum需要减小,right--;
*
*/
public class MaxOperations {
public int maxOperations(int[] nums, int k) {
Arrays.sort(nums);
int count = 0;
int left = 0;
int right = nums.length - 1;
while(left <= right) {
if (nums[left] + nums[right] == k) {
count++;
left++;
right--;
} else if(nums[left] + nums[right] < k) {
left++;
} else {
right--;
}
}
return count;
}
}