Two Sum Leetcode 解法实现
来源:互联网 发布:java 从启动程序 内存 编辑:程序博客网 时间:2024/06/07 11:55
这道题不难,只要用对工具的话,下面是时间复杂度为o(n)的解法,具体如下:
class Solution {public: vector<int> twoSum(vector<int> &numbers, int target) { int len = numbers.size(); assert(len >= 2); vector<int> ret(2, 0); map<int, int> mapping; // default all are 0 for(int i=0;i<len;i++) { if(mapping[target-numbers[i]]) { ret[0]=mapping[target-numbers[i]]; ret[1]=i+1; break; } else { mapping[numbers[i]]=i+1; } } return ret; }};时间复杂度为o(nlogn)的解法如下所示:
class Solution {public: vector<int> twoSum(vector<int> &numbers, int target) { int i,j; vector<int> a; int n=numbers.size(); int sum=0; int flag[100000][2]; for(i=0;i<n;i++) { flag[i][0]=numbers[i]; flag[i][1]=i+1; } sort(numbers.begin(),numbers.end()); i=0;j=n-1; while(i<j) { sum=numbers[i]+numbers[j]; if(sum>target) { j--; } else if(sum==target) { break; } else { i++; } } // printf("%d %d\n",i,j); int k,p,q,fok1=0,fok2=0,count=0; for(k=0;k<n;k++) { if(count==2) break; else { if(flag[k][0]==numbers[i]&&fok1==0) { p=flag[k][1]; count++; fok1=1; } else if(flag[k][0]==numbers[j]&&fok2==0) { q=flag[k][1]; count++; fok2=1; } } } if(p>q) { a.push_back(q); a.push_back(p); } else { a.push_back(p); a.push_back(q); } return a; }};
0 0
- Two Sum Leetcode 解法实现
- leetcode:two sum 菜鸟解法
- leetcode:two sum的三种解法
- leetcode 1. Two Sum 解法讨论
- LeetCode Two Sum 之 JavaScript 多种解法
- leetcode two sum python 实现
- LeetCode(1) Two Sum实现
- [leetcode]-[Two Sum]-python实现
- leetcode之371. Sum of Two Integers(C++解法)
- LeetCode:1. Two Sum解法(C,C++,Jave,Python)
- 【Leetcode】Two Sum (Sum)
- Two Sum问题及解法
- [LeetCode]1 Two Sum(C++,Python实现)
- LeetCode-java实现-T1-Two Sum
- LeetCode 之 Two Sum — C++ 实现
- [leetcode]Two Sum C++ python实现
- leetcode (1) Two Sum js代码实现
- LEETCODE 1.Two Sum (python实现)
- SQLT工具的安装过程
- lsof使用详解
- ACTIVEX控件的使用方法
- wpa_supplicant_control_data_flow
- C++11 lambda表达式
- Two Sum Leetcode 解法实现
- 安能辨其是真假
- A标签的css样式
- JDBC底层源代码
- 深入java集合学习1-集合框架浅析
- Unity结合3dmax开发项目的一点经验
- LeetCode Palindrome Number
- 跨平台框架Cordova 命令行简介(CLI)
- LINUX系统中动态链接库的创建与使用