Arrays
Array 相关的题目主要分为三类:
(1) Sorted Array: 其中典型题目包括
1. Merge Two Sorted Array
2. Merge K Sorted Array
3. Median of Two Sorted Arrays
(2) Subarry: 谈到subarray,应该能够立刻想到一个变量叫做subarray sum,有利于解题 其中典型题目包括
1. Best Time to Buy and Sell Stocks I
2. Best Time to Buy and Sell Stocks II
3. Best Time to Buy and Sell Stocks III
4. Subarray I
5. Subarray II
6. Subarray III
7. Subarray IV
(3) Two Pointers: 这种方法主要用来做Two sum类的问题,使用头指针,尾指针,(中指针 if necessary). 当two pointer不足以解决问题的时候,引入hash,然后进行枚举 其中典型题目包括
1. Two Sum
2. 3Sum
3. 4Sum
4. K Sum
5. 3Sum Closest
6. Partition Array
杂: operator overloading
在函数结束的时候加入const关键字,会强迫this指针指向的对象变为const,从而导致其成员无法被修改。在operator overloading中,左右两侧都应该是const,所以bool operator < (const Myclass &rhs) const {}
在这里统一确定一个operator overloading的写法
题目: Merge k Sorted Arrays
用途: priority_queue创建最大堆
class Element {
public:
int row;
int col;
int val;
Element() : row(0), col(0), val(INT_MIN) {}
Element(int _row, int _col, int _val) : row(_row), col(_col), val(_val) {}
bool operator < (const Element &rhs) const {
return (val > rhs.val);
}
};
题目: Subarray Sum Closest
用途: 用一个成员来比较类
class sumIndexPair {
public:
int sum;
int index;
sumIndexPair(int _sum, int _index) : sum(_sum), index(_index) {}
bool operator < (const sumIndexPair &rhs) const{
return (sum < rhs.sum);
}
};