题解 | #寻找两头牛的情报关联#

寻找两头牛的情报关联

https://www.nowcoder.com/practice/5cb34321b6dd41bcbea3db454c2f6e9f

考察的知识点:双指针;

解答方法分析:

  1. 初始化两个指针 p1p2,初始时指向数组的开始和结束位置。然后,开始迭代查找:
  2. 如果 info[p1] + info[p2] 等于目标权重,找到了一个目标组合,返回 [p1, p2]
  3. 如果 info[p1] + info[p2] 小于目标权重,说明当前的和太小了,需要增加和的值,所以将 p1 指针右移一位;
  4. 如果 info[p1] + info[p2] 大于目标权重,说明当前的和太大了,需要减小和的值,所以将 p2 指针左移一位;
  5. 重复这个过程,直到找到目标组合或者 p1 >= p2,此时表示遍历完了整个数组,仍未找到目标组合。

所用编程语言:C++;

完整编程代码:↓

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param info int整型vector
     * @param target_weight int整型
     * @return int整型vector
     */
    vector<int> findWeightRelation(vector<int>& info, int target_weight) {
        vector<int> result;
        int p1 = 0;
        int p2 = info.size() - 1;
        while (p1 < p2) {
            int sum = info[p1] + info[p2];
            if (sum == target_weight) {
                result.push_back(p1+1);
                result.push_back(p2+1);
                return result;
            } else if (sum < target_weight) {
                p1++;
            } else {
                p2--;
            }
        }
        result.push_back(-1);
        result.push_back(-1);
        return result;
    }
};

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务