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);
    }
};

results matching ""

    No results matching ""