Использование хэш-карты не требуется. Вы можете вообще пропустить его и просто сохранить вычисленные промежутки в int [] или ArrayList:
//using int[]
public int[] calculateGap(int[] nums) {
int len = nums.length;
int [] dist = new int[len-1];
for(int i = 1; i < len; i++) {
dist[i-1] = Math.abs(nums[i] - nums[i-1]);
}
}
//using ArrayList
public ArrayList<Integer> calculateGap(int[] nums) {
int len = nums.length;
ArrayList<Integer> dist = new ArrayList<Integer>();
for(int i = 1; i < len; i++) {
dist.add(Math.abs(nums[i] - num[i-1]));
}
}
НО Если вы абсолютно хотите использовать Hashmap, это то, как вы можете сделать это в одном цикле:
public static ArrayList<Integer> calculateGap(int[] nums) {
int l = nums.length;
HashMap<Integer, Integer> dist = new HashMap<>();
ArrayList<Integer> gaps = new ArrayList<Integer>();
int prev = 0;
for(int i=1; i<l;i++) {
prev = nums[i-1];
dist.put(prev, nums[i]);
gaps.add(Math.abs(dist.get(prev)-prev));
}
return gaps;
}
Или с выходом int []:
public static int[] calculateGap(int[] nums) {
int l = nums.length;
Map<Integer, Integer> dist = new HashMap<>();
int[] gaps = new int[l-1];
int prev = 0;
for(int i=1; i<l;i++) {
prev = nums[i-1];
dist.put(prev, nums[i]);
gaps[i-1] = (Math.abs(dist.get(prev)-prev));
}
return gaps;
}
Очевидно, вам не нужно использовать dist.get (prev), поскольку вы можете просто использовать nums [i], но я предполагаю, что по какой-то причине вы хотите использовать Hashmap для получения пробелов.