美文网首页数据结构和算法分析算法算法提高之LeetCode刷题
算法:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数

算法:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数

作者: 志哥谈笑间 | 来源:发表于2018-07-19 23:42 被阅读11次

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

示例:

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

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

题目原地址:

https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/29/

可以把写好的代码去这里提交,验证是否通过。

/**
 * 首先想到的肯定是拿第一个元素与后面的依次加,看是否等于目标值,
 * 然后再第二个、第三个...
 */
public int[] twoSum1(int[] nums, int target) {
    for (int i = 0; i < nums.length; i++) {
        for (int j = i + 1; j < nums.length; j++) {
            if (nums[j] == target - nums[i]) {
                return new int[] {i, j};
            }
        }
    }
    return new int[]{0,0};
}

/**
 * 把数值作为 key,它的下标作为 value
 * 遍历数组,判断 map 是否含有这个目标值-当前数值,
 * 有直接返回,没有的话放到map里面
 *
 * 所以以后写代码,如果有双层 for 循环,首先考虑一下能否用 map 替换一层
 */
public int[] twoSum2(int[] nums, int target) {
    Map<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};
        }
        map.put(nums[i], i);
    }
    return new int[]{0,0};
}

这个好像有点简单

如果觉得内容还不错,可以关注一下我哦
期待与你相遇,一同成长前行!

相关文章

  • leetcode1

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

  • 1. 两数之和

    LeetCode 的算法题 PHP解法记录 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假...

  • 1. 两数之和Two Sum

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 Given an array of integers...

  • LeetCode算法大挑战oneDay

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

  • [LeetCode] 两数之和

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

  • LeetCode1.两数之和JavaScript

    LeetCode1.两数之和JavaScript 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可...

  • 1.两数之和(Two Sum)

    1. 两数之和(Two Sum) 题目难度: 简单 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 ...

  • leetcode 1. 两数之和

    leetcode 1. 两数之和题目: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每...

  • LeetCode刷题 1 两数之和

    LeetCode刷题 1 两数之和 题目 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每...

  • 「算法」两数之和 & 两数之和 II

    00001 两数之和 题目描述 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只...

网友评论

  • TAO涛水:简单吗? 写个完整的程序看看。 我比较菜,搞不会:sob:
    志哥谈笑间:@TAO涛水 这不是完整的吗,你拿着运行一下就好了啊
  • fdcee21643c3:您好,请问 nums.length 是不是应该写成 nums.length - 1,似乎多比较了一次
    志哥谈笑间:@douya0808 你说的是对的
    fdcee21643c3:@志哥 我也不太确定,感觉外层循环的用途和冒泡排序的外层循环一样,都是用来控制比较次数的,但是LeetCode的答案也是这么写的,我怕有我没看出来的隐含义在里面
    志哥谈笑间:@douya0808 嗷嗷嗷,你说的是上面那个啊,我没注意那个,哈哈哈,那个是可以的

本文标题:算法:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数

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