Java 返回两个不同数组中的两个元素相差2或更少但不相等的次数计数

Java 返回两个不同数组中的两个元素相差2或更少但不相等的次数计数,java,arrays,if-statement,operators,Java,Arrays,If Statement,Operators,当我练习编写bat的Java问题时,我遇到了以下问题陈述 问题:- 给定两个长度相同的数组nums1和nums2,用于 NUMS1,考虑NUMTS2中的相应元素(相同) 索引)。返回两个元素被删除的次数的计数 相差2或更小,但不相等 例如:- matchUp([1, 2, 3], [2, 3, 10]) → 2 matchUp([1, 2, 3], [2, 3, 5]) → 3 matchUp([1, 2, 3], [2, 3, 3]) → 2 我的解决方案:- public int matc

当我练习编写bat的Java问题时,我遇到了以下问题陈述

问题:-

给定两个长度相同的数组nums1和nums2,用于 NUMS1,考虑NUMTS2中的相应元素(相同) 索引)。返回两个元素被删除的次数的计数 相差2或更小,但不相等

例如:-

matchUp([1, 2, 3], [2, 3, 10]) → 2
matchUp([1, 2, 3], [2, 3, 5]) → 3
matchUp([1, 2, 3], [2, 3, 3]) → 2
我的解决方案:-

public int matchUp(int[] nums1, int[] nums2) {
  int count=0;
  for(int i=0;i<=nums1.length-1;i++){
    if((nums1[i]-nums2[i]==1)||(nums1[i]-nums2[i]==2)||(nums2[i]-nums1[i]==1)||(nums2[i]-nums1[i]==2))
    count++;
  }
  return count;
}
public int匹配(int[]nums1,int[]nums2){
整数计数=0;

对于(int i=0;i使用
Math.abs
在比较时获得差异

您可以使用流API

return IntStream.range(0, nums1.length).map(i -> Math.abs(nums1[i]-nums2[i]))
                .filter(i -> i==2 ||i ==1).count();

不使用API,只是@Eklavya给出的惊人答案的补充

public static int matchUp(int a[], int b[]){
    int count = 0;
    for(int i=0;i<a.length;i++){
        int diff = Math.abs(a[i]-b[i]);
        if(diff>0 && diff<=2)
           count++;
    }
    return count;
}
公共静态int匹配(int a[],int b[]{
整数计数=0;
对于(int i=0;i0&&diff)