Blog.

K 和数对的最大数目

Cover Image for K 和数对的最大数目
Bernie
Bernie

1679.K 和数对的最大数目

leetcode 链接

思路:

先排序,然后前后双指针判断,如果两个指针的和大于 k,则右指针向左移动,如果两个指针的和小于 k,则左指针向右移动,如果两个指针的和等于 k,则左指针向右移动,右指针向左移动,然后结果+1,最后返回结果即可。

typescript 解法

function maxOperations(nums: number[], k: number): number {
  nums.sort((a, b) => a - b);
  let left = 0;
  let right = nums.length - 1;
  let count: number = 0;
  while (left < right) {
    const sum = nums[left] + nums[right];
    if (sum > k) {
      right--;
    } else if (sum < k) {
      left++;
    } else {
      count++;
      right--;
      left++;
    }
  }
  return count;
}

go 解法

func maxOperations(nums []int, k int) int {
    sort.Ints(nums)
    left := 0
    right := len(nums) - 1
    count := 0
    for left < right {
        sum := nums[left] + nums[right]
        if sum > k {
            right --
        } else if sum < k {
            left ++
        } else {
            count ++
            left ++
            right --
        }
    }
    return count
}