博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode刷题笔记
阅读量:5874 次
发布时间:2019-06-19

本文共 979 字,大约阅读时间需要 3 分钟。

问题:

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

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

思路

首先遍历一次整数数组,将数组下标和值建立哈希表,再从头遍历一次哈希表,先得出当前读取的位置
i上对于
target的差
complement,得到后通过查看该值是否保存在哈希表的value中,若存在,返回该值的
key,否则读取下一元素。

技能点

1.java中HashMap结构知识点:

声明语句: Map<Integer, Integer> map = new HashMap<>();
添加内容: map.put(key,value);
鉴定存在: map.containsValues(value); //本例是把num[i]作为value
      map.containsKey(key);
找到下标: map.get(value); //根据value返回下标
返回数组: return new int[]{num1,num2};

最终代码:

public int[] twoSum(int[] nums, int target) {    Map
map = new HashMap<>(); //建立hashmap for (int i = 0; i < nums.length; i++) { map.put(nums[i], i); } //在哈希表中遍历每个元素,找到可能与之匹配成target的下标 for (int i = 0; i < nums.length; i++) { int complement = target - nums[i]; if (map.containsValues(complement) && map.get(complement) != i) { return new int[] { i, map.get(complement) }; } } throw new IllegalArgumentException("No two sum solution");}

转载地址:http://pxhnx.baihongyu.com/

你可能感兴趣的文章
表生成器@TableGenerator
查看>>
我眼中的PM
查看>>
sqrt()平方根计算函数的实现1——二分法
查看>>
Web前端研发工程师编程能力飞升之路
查看>>
Linux内核 设备树操作常用API【转】
查看>>
“安装程序无法定位现有系统分区,也无法创建新的系统分区”提示
查看>>
volatile的深入理解--【sky原创】
查看>>
RabbitMQ指南之二:工作队列(Work Queues)
查看>>
js提交图片转换为base64
查看>>
面向对象 委托
查看>>
PassWord控件
查看>>
【带着canvas去流浪(5)】绘制K线图
查看>>
Linux 删除mysql数据库失败的解决方法
查看>>
浏览器缓存文件导致js文件更改无效
查看>>
如何才能学好javascript
查看>>
学习CodeIgniter框架之旅(二)继承自定义类
查看>>
yum被锁Another app is currently holding the yum lock; waiting for it to exit...
查看>>
Excel .net读取
查看>>
设计模式之简单工厂模式
查看>>
我的Python成长之路---第三天---Python基础(13)---2016年1月16日(雾霾)
查看>>