算法:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数
来源:     阅读:457
依创模板店
发布于 2020-11-08 06:32
查看主页

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

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

示例:

给定 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 - 1; 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};}

这个如同有点简单

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

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 windows
相关推荐
免费部署搭建和快手抖音类似的短视频直播APP,仿v聊富聊花间一对一直播收费APP
一次聊天引发的思考--java并发包实战
做前台程序员能在一线城市买上房?出两道题考考你
DHCP的工作过程,你Get到了吗?
vivo互联网算法大数据安全最新紧急职位需求
首页
搜索
订单
购物车
我的