java实现给出一个数组,判断数组里面的两个值相加是否等于给出的数 如果是则返回对应的下标

/**
 * Created by Ymino on 2019/3/25.
 * 给出一个数组,判断数组里面的两个值相加是否等于给出的数 如果是则返回对应的下标
 * nums[2,7,9,11] target 9
 * 返回 [1,2] (2+7)
 * 时间复杂度 O(n) 空间复杂度O(n)
 */
public  int[] to_sum(int[] nums,int target){
        if (nums == null || nums.length <2){
            return new int[]{-1,-1};
        }
        int res[] = new int[]{-1,-1};
        Map<Integer,Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(target-nums[i])){
                res[0] = map.get(target-nums[i]);
                res[1] = i;
            }
            map.put(nums[i],i);

        }
        return res;
    }

### 回答1: 可以使用for循环遍历两个二维数组,比较它们的每一个元素,当元素相同时,即它们的下标相等。具体的实现方法可以参考下面的代码示例: ```java public static boolean isEqual(int[][] arr1, int[][] arr2) { if (arr1.length != arr2.length || arr1[0].length != arr2[0].length) { return false; } for (int i = 0; i < arr1.length; i++) { for (int j = 0; j < arr1[0].length; j++) { if (arr1[i][j] != arr2[i][j]) { return false; } } } return true; } ``` 该方法接受两个二维数组作为参返回一个布尔表示它们的下标是否相等。首先,它会检查两个数组的维度是否相同,如果不同,直接返回false。然后,它使用双重for循环遍历两个数组的所有元素,比较它们的是否相等,如果有一个不相等,就返回false。最后,如果所有元素都相等,就返回true,表示它们的下标相等。 ### 回答2: 要使得两个二维数组下标相等,需要满足下列条件: 1. 数组长度相等:首先,两个数组的行和列必须相等。只有当行和列都相等时,才能通过相同的下标访问到对应的元素。 2. 遍历对应位置:使用双重循环遍历这两个二维数组,对于每个下标位置,两个数组的行和列必须相等,才能处理对应位置的元素。 以下是一个示例代码,实现两个二维数组下标相等: ``` int[][] array1 = {{1, 2}, {3, 4}}; int[][] array2 = {{5, 6}, {7, 8}}; // 检查数组长度是否相等 if (array1.length != array2.length || array1[0].length != array2[0].length) { System.out.println("数组长度不相等"); return; } // 遍历对应位置 for (int i = 0; i < array1.length; i++) { for (int j = 0; j < array1[0].length; j++) { int element1 = array1[i][j]; int element2 = array2[i][j]; // 处理对应位置的元素 // 这里可以进行任意操作,比如比较元素大小、相加等等 if (element1 == element2) { System.out.println("下标为 (" + i + ", " + j + ") 的元素相等"); } } } ``` 通过以上代码,我们可以判断两个二维数组相同下标位置的元素是否相等,并进行相应的操作。 ### 回答3: 要使两个二维数组下标相等,需要满足以下条件: 1. 两个数组的维度相同,即行和列都相等。 2. 两个数组对应位置的元素满足某种关系。 假设有两个二维数组array1和array2,它们的维度都为n行m列。 为了使得两个数组下标相等,我们可以通过以下两种方式: 1. 遍历数组元素比较: 我们可以使用两个嵌套的for循环,分别遍历array1和array2中的元素。在遍历的过程中,我们可以使用条件语句来比较对应位置的元素是否相等。 ```java boolean isEqual = true; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (array1[i][j] != array2[i][j]) { isEqual = false; break; } } } ``` 上述代码会遍历两个数组中的所有元素,如果发现对应位置的元素不相等,则会将isEqual标志设置为false。如果遍历结束后,isEqual仍为true,则说明两个数组下标相等。 2. 使用索引运算: 可以通过修改索引运算的方式,使得两个数组下标相等。由于数组的索引是从0开始的,我们可以通过调整数组的起始索引来实现。 ```java int[][] array1 = new int[n][m]; int[][] array2 = new int[n][m]; int startRow = 1; int startCol = 1; // 修改数组的起始索引 int[][] modifiedArray1 = modifiedArray(array1, startRow, startCol); int[][] modifiedArray2 = modifiedArray(array2, startRow, startCol); // 此时两个数组的索引相等 ``` 上述代码中,我们通过定义startRow和startCol来指定修改后的起始索引。使用modifiedArray方法来修改数组的起始索引,返回修改后的数组。修改后,两个数组的索引即可相等。 综上所述,我们可以使用上述两种方式来使得两个二维数组下标相等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值