LeetCode 1-Two Sum
来源:互联网 发布:朋友圈转发软件免费版 编辑:程序博客网 时间:2024/05/04 15:45
题目:给一个数组a[n]以及一个给定值target,返回数组中的两个数的位置,使其之和等于给定值
思路:1、暴力法搜索,两个for循环依次选取两个值进行判断,匹配则停止并输出。for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){panduan'...}};时间复杂度O(n2)不过这种方法会超时。
2、以空间换时间,用一个map,key为数组的值,value为值的位置,一次循环遍历,如果target-a[i]不在map中,则将当前值放入map,否则可以直接输出,时间负责度:O(N),空间复杂度:O(N)
class Solution {public: //时间复杂度:O(n),单次遍历 //空间复杂度:O(n),nmap随输入数组大小变化 //思路:;利用一个map,map中存的值为<当前值,在数组中位置>,遍历数组,(1)如果target-当前值未在map中,则将当前值放入map中 //(2)如果当前值已经在map中,则跳过(在(1)不成立情况下,如果(1)成立则输出两个相同值的位置) vector<int> twoSum(vector<int> &numbers, int target) { int i,j; vector<int> results; map<int,int> nmap; for(i=0;i<=numbers.size()-1;i++){ if(!nmap.count(numbers[i])){ if(nmap.count(target-numbers[i])){ results.push_back(nmap[target-numbers[i]]+1); results.push_back(i+1); break; } else{ nmap.insert(pair<int, int>(numbers[i], i)); } } else if(nmap[numbers[i]]<i&&(numbers[i]*2==target)){ results.push_back(nmap[target-numbers[i]]+1); results.push_back(i+1); break; } } return results; } };
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
- Two Sum | LeetCode(1)
- [Leetcode]1Two Sum
- leetcode 1 Two Sum
- leetcode #1 Two Sum
- leetcode 1:Two Sum
- LeetCode 1 Two Sum
- leetcode #1 two sum
- POJ 1159:Palindrome 最长公共子序列
- Cocos2d-x学习笔记(六)—— 事件处理
- Android API Guides – Application Fundamentals
- 深入理解JVM内幕
- hdu2102 A计划
- LeetCode 1-Two Sum
- LeetCode 211. Add and Search Word - Data structure design
- uva1635 Irrelevant Elements(唯一分解定理)
- 在linux下用tomcat部署java web项目的过程与注意事项
- 去掉xcode编译warning:ld: warning: directory not found for option '-L
- 9.3tcp多进程并发模板和多线程并发模板
- opencv 环境搭配
- 18个Java开源CMS系统一览
- Float类型之间是不能够取余的