LeetCode 1 Two Sum题解
来源:互联网 发布:海岛大亨5 for mac 编辑:程序博客网 时间:2024/06/02 05:00
题目地址:https://leetcode.com/problems/two-sum/
1. Two Sum
难度:简单
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution.
给出一个int数组,如果两个数字的和等于一个特定的值,那么就返回它们在数组中的下标。你可以假定每次输入都只有一种结果。Example:
Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].
方法一:暴力方法O(n^2)
用两次循环的方式,算出所有组合的值并与Target Value比较
Java
public class Solution { public int[] twoSum(int[] nums, int target) { int[] index=new int[2]; for(int i=0;i<nums.length-1;i++) { for(int j=i+1;j<nums.length;j++) { if(nums[i]+nums[j]==target) { index[0]=i; index[1]=j; } } } return index; }}
不熟悉C++容器的同学可以在编写测试代码的时候可以参考C++容器库的文档:http://zh.cppreference.com/w/cpp/container
C++在用同样的算法时会出现超时
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> vc; for(int i=0;i<nums.size()-1;i++) { for(int j=i+1;j<nums.size();j++) { if(nums.at(i)+nums.at(j)==target) { vc.push_back(i); vc.push_back(j); } } } return vc; }};
可见,测试用例数据量比较大的时候,这种暴力的方法就行不通了。
方法二:C++ Map或Java HashMap(基于数据结构散列表,C++Map用红黑树实现,插入查找效率O(logn),Java的HashMap插入查找效率O(1))
循环一次,依次查找相应的Target Value-nuts[i]值是否存在
Java
public class Solution { public int[] twoSum(int[] nums, int target) { int[] index=new int[2]; HashMap<Integer,Integer> hashmap=new HashMap<Integer,Integer>(); for(int i=0;i<nums.length;i++) { if(hashmap.containsKey(target-nums[i])) { index[0]=i; index[1]=hashmap.get(target-nums[i]); break; }else { hashmap.put(nums[i],i); } } return index; }}
C++
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> vc; map<int,int> mp; for(int i=0;i<nums.size();i++) { if(mp.count(target-nums[i])) { vc.push_back(mp[target-nums[i]]); vc.push_back(i); break; }else { mp[nums[i]]=i; } } return vc; }};
0 0
- LeetCode 1 Two Sum 题解
- LeetCode 1 Two Sum题解
- LeetCode题解(1)--Two Sum
- LeetCode题解-1-Two Sum
- LeetCode题解:Two Sum
- LeetCode题解:Two Sum
- leetcode-Two Sum[题解]
- leetcode No.1 - two sum题解
- [LeetCode题解001]Two Sum
- LeetCode题解 || Two Sum问题
- [Leetcode题解]001 Two Sum
- 1. Two Sum : LeetCode 题解
- leetcode题解-1.Two Sum
- [LeetCode] Two Sum Python 题解
- leetcode 题解 1. Two Sum
- 【LeetCode】Two Sum 题解报告
- LeetCode题解 C++ Two Sum
- leetcode题解-1. Two Sum
- 第九周项目2对称矩阵压缩存储的实现与应用(1)
- 第九周项目2- 对称矩阵压缩存储的实现与应用(2)
- Oracle排名函数
- 攻城狮成长日记-----关于为移动端做后台的二三事
- 使用JS解析JSON数组
- LeetCode 1 Two Sum题解
- 微信支付参数说明
- 《您的设计模式》(CBF4LIFE)之“抽象工厂模式”【整理】
- 封装各种控件
- markdown语法帮助
- Django数据库操作
- 第九周项目3矩阵转置
- 第7周 队列数组
- RxJava从入门到放弃1.0--rxjava的简单使用