题解 | #农场牛类别匹配#

农场牛类别匹配

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;
    }
}

知识点:

双指针法、通过左右两个指针从两端向中间逼近,寻找符合条件的配对

解题分析:

  1. 首先对breeds数组进行排序,以便使用双指针法。
  2. 使用left和right两个指针,分别指向数组的最左端和最右端。
  3. 初始化res为0,用于计数符合条件的配对数量。
  4. 进入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指针向左移动一位,因为数组已排序,左移可以使得和更接近目标值。
  5. 循环结束后返回res,即符合条件的配对数量。

编程语言:

java

全部评论

相关推荐

Beeee0927:是缅甸园区吗
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 11:16
点赞 评论 收藏
分享
Twilight_m...:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:30
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务