题解 | #农场牛类别匹配#
农场牛类别匹配
https://www.nowcoder.com/practice/270db1e1d65b4366a49a517ec7822912
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param breeds int整型一维数组
* @param target_sum int整型
* @return int整型
*/
public int countMatchingPairs (int[] breeds, int target_sum) {
int count = 0;
for (int i = 0; i < breeds.length; i++) {
for (int j = i + 1; j < breeds.length; j++) {
if ((breeds[i] + breeds[j]) == target_sum) {
count++;
}
}
}
return count;
}
}
知识点:
双指针法、通过左右两个指针从两端向中间逼近,寻找符合条件的配对
解题分析:
- 首先对breeds数组进行排序,以便使用双指针法。
- 使用left和right两个指针,分别指向数组的最左端和最右端。
- 初始化res为0,用于计数符合条件的配对数量。
- 进入while循环,当left小于right时执行以下操作:如果breeds[left] + breeds[right]小于target_sum,则将left指针向右移动一位,因为数组已排序,右移可以使得和更接近目标值。如果breeds[left] + breeds[right]等于target_sum,则将left指针向右移动一位,并将res加一,表示找到了一个符合条件的配对。如果breeds[left] + breeds[right]大于target_sum,则将right指针向左移动一位,因为数组已排序,左移可以使得和更接近目标值。
- 循环结束后返回res,即符合条件的配对数量。
编程语言:
java
腾讯成长空间 5867人发布
查看12道真题和解析