[理解leetcode解法]1.TwoSum 兩數之和
阿新 • • 發佈:2019-02-17
1.TwoSum 兩數之和
題目忘記複製了 - -...
bool lessthan(const pair<int, int>& lhs, const pair<int, int>& rhs) {
if (lhs.first == rhs.first)
return lhs.second < rhs.second;
return lhs.first < rhs.first;
} //1
class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target) {
vector<pair<int, int>> vnum; //2 |
//1: vector第三個引數,lessthan函式,函式體內實現你想要排序的演算法,這裡是如果lhs的vnum的第一個元素(即value)小於rhs的vnum的第一個元素,那麼則返回true,若第一個元素相同,則比較第二個元素(即位置數i) |
//2: vector,C++容器 (1)標頭檔案#include<vector> (2)建立vector<int> vec; (3)尾部插入字:vec.push_back(a); (4)使用下標訪問元素 (5)使用迭代器訪問元素 (6)插入元素:vec.insert(vec.begin()+i,a);在第i+1個元素前面插入a (7)刪除元素:vec.erase(vec.begin()+2);刪除第3個元素 (8)向量大小:vec.size() (9)清空:vec.clear() vector演算法(#include<algorithm>): (1)reverse(vec.begin(),vec.end()); (2)sort(vec.begin(),vec.end(),lessthan);//預設升序 pair<int,int> (1)當需要返回兩個數的時候,就例如這個類裡面的vnum,需要第一個元素value和第二個元素num位置 (2)make_pair跟賦值一樣 |
//3 這個s++和e--的,只有在當一種解法的時候才可用,不然ans不按從小到大順序排序。 |