【数组】两数之和

简介: 【数组】两数之和

1. 题目描述

2. 题目分析

  1. 我们首先想到的,是暴力,直接双重循环,这种的耗费时间为O(n^2),也不是面试官想要看到的,我们需要在此方法的基础上对其改进。
  2. 我们想到了一种数据结构(HashMap),我们知道,对于HashMap而言,它具有(key-value)的一种映射,我们将 target - nums[i] 设置为key,将它的下标i设置为value,这样的话, 当我们在数组中再一次遍历到**target - nums[i]**时,将 value 和当前的下标设置返回
if (map.containsKey(nums[i])) {
        res[0] = map.get(nums[i]);
                res[1] = i;
      } else {
        map.put(target - nums[i], i);
      }

3. 题目代码

class Solution {
   public int[] twoSum(int[] nums, int target) {
    HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
    int[] res = new int[2];
    for (int i = 0; i < nums.length; i++) {
      if (map.containsKey(nums[i])) {
        res[0] = map.get(nums[i]);
                res[1] = i;
      } else {
        map.put(target - nums[i], i);
      }
    }
    return res;
  }
}


相关文章
|
3月前
|
存储 算法 Go
LeetCode第二题: 两数相加
 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
LeetCode第二题: 两数相加
|
4月前
|
存储
leetcode-2:两数相加
leetcode-2:两数相加
22 0
|
8月前
454. 四数相加 II
454. 四数相加 II
27 0
|
8月前
|
存储 算法
LeetCode2-两数相加
LeetCode2-两数相加
|
11月前
|
存储
LeetCode 2. 两数相加
LeetCode 2. 两数相加
52 0
|
11月前
|
存储 Java Python
leetcode:2.两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
36 0
|
存储
LeetCode 2 两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
77 0
|
Java
求整数数组中最大子数组的和(1)
绝大部分同学都已经做出来了单维数组的 求数组中最大子数组的和, 但是你不妨试一试:把你的程序编译为可执行文件, 然后执行 例如 maxsum.exe 输出就是最大子数组的和, 上面的例子就应该输出 16.
87 0
求整数数组中最大子数组的和(1)
|
数据处理
整数数组中最大子数组的和(2)—— 处理二维数组
将二维转化为一维处理,当子矩阵的上下行确定时,把上下行中每一列的数据当作一个单元,确定左右列的过程就是求以列为单元的一维数组的子数组最大和的过程,这种方法大大提高了效率
66 0
整数数组中最大子数组的和(2)—— 处理二维数组
|
存储 Rust 算法
两数相加
两数相加
108 0
两数相加