LeetCode#1. Two Sum
来源:互联网 发布:淘宝情趣用品店铺名 编辑:程序博客网 时间:2024/05/21 06:41
- 题目:给定一个整数数组nums和一个整数target,返回数组两个元素下标,这两个元素之和等于target(对于一个target,这个数组中只有两个元素之和会等于target)
例如:nums = [2, 7, 11, 15], target = 9
nums[0] + nums[1] = 2 + 7 = 9
所以返回结果为[0,1]
思路:这道题如果用两个for循环肯定可以可以得出结果,但是效率太低。
换一种思路:利用一次遍历,在遍历的过程中把
(target-nums[i],i)用hashmap存储,这样只要判断Map中的key是否已经存在,若存在,则找到了这样一对数(时间复杂度为o(n))如果题目给出的数组是排好序的,还可以用两个指针来做(类似于二分查找)
但这个题目中不适合用两个指针(给数组排完序后,不好确定元素的原来的index)
代码:
public class Solution { public int[] twoSum(int[] nums, int target) { int len = nums.length; if(len < 2){ return null; } int[] result = new int[2]; Map<Integer,Integer> map = new HashMap<>(); for(int i = 0; i < len; i++){ int value = target - nums[i]; if(map.containsKey(nums[i])){ result[0] = map.get(nums[i]); result[1] = i; break; }else{ map.put(value,i); } } return result; }}
数组中很多时候都可以用双指针来处理
0 0
- LeetCode 1. Two Sum
- [LeetCode]1.Two Sum
- LeetCode 1.Two Sum
- LeetCode --- 1. Two Sum
- [Leetcode] 1. Two Sum
- leetcode---1.Two sum
- [Leetcode] 1. Two Sum
- LeetCode 1.Two Sum
- LeetCode 1.Two Sum
- LeetCode 1.Two Sum
- 【LeetCode]1.Two Sum
- LeetCode 1.Two Sum
- leetcode 1. Two Sum
- [leetcode] 1. Two Sum
- leetcode 1. Two Sum
- Leetcode- 1. Two Sum
- LeetCode-1.Two Sum
- Leetcode 1. Two Sum
- 从地址栏输入URL到页面加载完成了什么操作
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- NYOJ14会场安排问题
- HDU 5685 Problem A
- 立方体动画制作------方法二
- LeetCode#1. Two Sum
- C++中常问道一些基本概念整理
- CSS块级元素和行内元素
- opencv入门学习之六:拉普拉斯Laplacian变换锐化图像
- 四大组件 — ContentProvider
- shoucang
- 4段代码了解Java虚拟机虚方法和非虚方法的分派
- 取球问题
- 《R语言入门》如何在Windows下安装R语言编程环境