##++前置和++后置
在对操作符++进行重载的时候有两个
//前置
Object operator ++();
//后置
Object operator ++(int);其实,前置和后置是有着效率上的差别的,STL中类类型迭代中有很多的前置操作
##++前置和++后置
在对操作符++进行重载的时候有两个
//前置
Object operator ++();
//后置
Object operator ++(int);其实,前置和后置是有着效率上的差别的,STL中类类型迭代中有很多的前置操作
##赋值运算操作符
为如下类型添加赋值运算。
class MyString
{
public:
MyString(char* pData = NULL);
MyString(const MyString str);
~MyString();##strcpy & memcpy
这两个库函数的实现应该算是比较简单的,但是竟然看到了很多不正确的版本,其实只要注意以下几点就OK了
char* MemCpy(char* dst, const char* src, int len){#N Queens
##DFS
N皇后非常经典,传统的DFS在N非常大的时候会TLE,DFS代码如下:
void placeQueens(int currentRow, int n, vector<int>& place, int& result)
{
if(currentRow == n)
{##Combination and Permutation
基于递归的思路
#include <iostream>
#include <vector>
#include <string>
using namespace std;
##Longest Common Subsequence
动态规划
设序列X= < x1, x2, …, xm > 和 Y= < y1, y2, …, yn > 的一个最长公共子序列Z= < z1, z2, …, zk >,则:
##Longest Increasing Subsequence
之前的一篇GIST其实已经解决了这个问题,只不过现在使用STL技术更加优雅地写出来了
这个问题可以用DP解决,如果定义
dp[i] = 以ai为结尾的最长上升子序列的长度
那么转移方程
dp[i] = max{1,dp[j]+1 | j < i and aj < ai}
##Top K 问题
###Methods
###Complexity
##LIS变种
从一列数中筛除尽可能少的数使得从左往右看,这些数是从小到大再从大到小的(网易)
###思路