LeetCode 1099. 小于 K 的两数之和

题目描述

1099. 小于 K 的两数之和

image-20250420052424211

思路分析

  • 求数量
  • 求最大可能值

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
func twoSumLessThanK(nums []int, k int) int {
	sort.Ints(nums)
	count := 0
	n := len(nums)

	for i := 0; i < n-1; i++ {
		left, right := i+1, n-1
		// 使用双指针查找
		for left < right {
			sum := nums[i] + nums[left]
			if sum < k {
				// 如果和小于 k,所有从 left 到 right 的组合都满足条件
				count += right - left
				left++
			} else {
				right--
			}
		}
	}
	return count
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
func twoSumLessThanK(nums []int, k int) int {
	// 先排序
	sort.Ints(nums)
	res := -1

	left, right := 0, len(nums)-1
	for left < right {
		sum := nums[left] + nums[right]
		if sum < k {
			if sum > res {
				res = sum
			}
			left++
		} else {
			right--
		}
	}
	return res
}

➡️ 点击查看 Java 题解

1
write your code here
本文作者:
本文链接: https://hgnulb.github.io/blog/2023/34118172
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!