HashMapを使用して数字のペアからの絶対差を計算する方法は?

Nasko Apostolov:

私は、各要素が先行する要素と最初と最後の要素を除いて、後続の要素にキーの値であるキーと値のペアに整数配列を変換するために探しています。

私は配列をハッシュマップに変換した後、私は、配列内の整数の間のギャップを計算する必要があります。私は配列を変換することができていますが、よりエレガントな解決策を探していますし、まだギャップを見つける必要があります。

public void calculateGap(int[] nums) {
    int l = nums.length;
    Map<Integer, Integer> dist = new HashMap<>();

    for(int i=0; i<l; i++) {
        if(i != l-1) {
            int val = nums[i+1];
            dist.put(nums[i], val);    
        }
        if(i != 0) {
            int key = nums[i-1];
            dist.put(key, nums[i]);
        }
    }
}

入力:[3、6、9、1]

ハッシュマップのように入力:{3:6,6:9,9:1}

出力:[3、3、8]

güriösä:

Q:1はすぐに距離を計算することができたとき、私は、ハッシュマップの迂回が何のためにあるのかと思いまして。

public int[] calculateGap(int[] nums) {
    if (nums.length < 2) {
        throw new IllegalArgumentException();
    }

    int[] dist = new int[nums.length - 1];
    for (int i = 1; i < nums.length; i++) {
        dist[i - 1] = Math.abs(nums[i] - nums[i - 1]);
    }
    return dist;
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=331280&siteId=1