Leetcode1

作者: 腊鸡程序员 | 来源:发表于2019-03-19 09:47 被阅读0次
gp=0.jpg
题目描述:

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

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解题方法:

使用Map保存数据元素与其下标的对应关系,在一次遍历中即执行查找操作又执行map的插入操作.

import org.junit.Test;

import java.util.HashMap;

public class Leetcode1 {

    /**
     * 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
     * <p>
     * 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
     * <p>
     * 示例:
     * <p>
     * 给定 nums = [2, 7, 11, 15], target = 9
     * <p>
     * 因为 nums[0] + nums[1] = 2 + 7 = 9
     * 所以返回 [0, 1]
     */

    public int[] twoSum(int[] nums, int target) {

        HashMap<Integer, Integer> map = new HashMap();

        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(target - nums[i])) {
                return new int[]{map.get(target - nums[i]), i};
            } else {
                map.put(nums[i], i);
            }
        }

        throw new IllegalArgumentException("no two sum solution");
    }

    @Test
    public void test() {
        int[] nums = new int[]{1, 2, 3, 4, 5};
        int[] solution = twoSum(nums, 3);
        for (int i = 0; i < solution.length; i++) {
            System.out.print(solution[i] + " ");
        }
    }
}

时间复杂度O(n),空间复杂度:O(n).

考察点:

map
我们需要清楚地知道数组的值和对应下标关系,用map来保存这种关系,然后在map中查找目标值,返回目标值对应的value.

相关文章

  • LeetCode1

    用第一题熟悉一下环境 题目很简单,数组中找出两个数,使其和等于给出的target 思路 直接暴力求解,双重for循...

  • leetcode1

    按难度排序,每天刷点leetcode题,抄点解法,大部分解答是在leetcode的dicuss中找到的,没有一一引...

  • Leetcode1

    题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,...

  • leetcode1

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 给定 nums = [2, 7, 11, 15], ...

  • LeetCode1: Single Number

    1、一个非空整数数组,除了一个元素只出现一次,其余元素都出现了两次。找出这个一单独出现的元素。note: 线性的时...

  • leetcode1 two sum

    问题:Given an array of integers, returnindicesof the two nu...

  • LeetCode1:Two Sum

    注:最精华的思想是:x = nums[i] dict[x] = i取出第i个数字(以0为开头),把它的值装载...

  • leetcode1 Two Sum

    题目 https://leetcode.com/problems/two-sum/ 思路 盲猜N^2的遍历会超时,...

  • Leetcode1:python实现

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

  • Leetcode1——两数之和

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重...

网友评论

    本文标题:Leetcode1

    本文链接:https://www.haomeiwen.com/subject/twbwmqtx.html