算法例题

来源:互联网 发布:数据助理是做什么的 编辑:程序博客网 时间:2024/05/29 19:53

1.从给定的数组中找到两个元素的和为指定值的两个索引

例:Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1]. // 第一种最常见的就是遍历两次数组,取值相加。 public int[] findIndex(int[] nums, int target) {     for (int i = 0; i < nums.length; ++i) {         for (int j = i + 1; j < nums.length; ++j) {             if (nums[i] + nums[j] == target) {                 return new int[]{i, j};             }         }     }     return null; }

利用HashMap作为存储,键为目标值减去当前元素值,索引为值,比如i = 0时,此时首先要判断nums[0] = 2是否在map中,如果不存在,那么插入键值对key = 9 - 2 = 7, value = 0,之后当i = 1时,此时判断nums[1] = 7已存在于map中,那么取出该value = 0作为第一个返回值,当前i作为第二个返回值,具体代码如下所示。

public int[] findIndex(int[] nums,int target){    HashMap<Integer,Integer> map = new HashMap<>();    for(int i = 0 ;i < nums.length;i++){        if(map.containsKey(nums[i])){            return new int[]{map.get(key),i};        }        map.put(target - nums[i],i);    }    return null;}
原创粉丝点击