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

寻找两头牛的情报关联

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

知识点:哈希表

思路:

使用了一个哈希表mp来存储已经遍历过的数及其索引。初始化结果列表res为[-1, -1]。

通过遍历整数列表info的每个元素,依次进行如下操作:

  • 计算目标重量target_weight减去当前元素的差值t
  • 如果哈希表mp中存在键mp,说明存在两个数之和等于目标重量。如果结果列表res的第一个元素为-1或者哈希表中对应键mp的值小于res的第一个元素,则更新结果列表res为[mp.get(t), i + 1],其中i是当前元素的索引。
  • 如果哈希表mp中不存在键mp,将当前元素插入哈希表mp的键值对中,键为当前元素,值为当前元素的索引加1。

最后,返回结果列表res

编程语言:java

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param info int整型一维数组
     * @param target_weight int整型
     * @return int整型一维数组
     */
    public int[] findWeightRelation (int[] info, int target_weight) {
        Map<Integer, Integer> mp = new HashMap<>();
        int n = info.length;
        List<Integer> res = new ArrayList<>();
        res.add(-1);
        res.add(-1);

        for (int i = 0; i < n; i++) {
            int t = target_weight - info[i];
            if (mp.containsKey(t)) {
                if (res.get(0) == -1 || mp.get(t) < res.get(0)) {
                    res.set(0, mp.get(t));
                    res.set(1, i + 1);
                }
            } else {
                mp.put(info[i], i + 1);
            }
        }
        return res.stream().mapToInt(Integer::intValue).toArray();
    }
}

全部评论

相关推荐

OPSL:钱确实给的多,但是追责这一点比较迷惑…3个月具体如何计算呢?出勤天数30*3吗?还是21*3呢?万一中间学校有安排怎么办呢?这个得多问一问呀
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务