每日算法

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

你可以按任意顺序返回答案。

 

示例 1:

输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

最容易想到的是利用双循环 遍历两次求解 利用空间换时间进行求解 在遍历第一遍时保存所遍历获取信息(结果以及下标)就不需要第二次遍历。

 public int[] twoSum(int[] nums, int target) {
       int n=nums.length;
    //    使用哈希表保存第一次遍历时,有效信息
        Map<Integer,Integer> map=new HashMap<>();
        map.put(nums[0],0);
       for(int i=1;i<n;i++){
           int t=target-nums[i];
           if(map.containsKey(t)){
               return new int[]{map.get(t),i};
           }
           map.put(nums[i],i);
       }
        return new int[0];
    }
end
  • 作者:王富贵(联系作者)
  • 发表时间:2021-03-21 15:17
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 转载声明:如果是转载栈主转载的文章,请附上原文链接
  • 评论