题目
给你一个下标从 0 开始长度为
n
的整数数组nums
和一个整数target
,请你返回满足0 <= i < j < n
且nums[i] + nums[j] < target
的下标对(i, j)
的数目。
解题思路
- 对数组进行排序,可以利用List自带的sort函数传递比较规则(代码中的是倒序,也可以直接传null为默认的顺序排序)
- 通过两层循环进行遍历,第二层循环当出现符合条件的则剩余元素都符合,可以跳出当前循环减少消耗;
代码展示
class Solution { public int countPairs(List<Integer> nums, int target) { nums.sort((a, b) -> b - a); int sum = 0; int n = nums.size(); for (int i = 0; i < n; i++){ int temp = nums.get(i); for (int j = i + 1; j < n; j++){ if(temp + nums.get(j) < target){ sum += n - j; break; } } } return sum; } }