leetcode


1.遍历树每层多少个节点常用解法(199):

while(!qu.empty())

       {

int nSize = qu.size();

for(int i = 0; i<nSize; i++)

{

..........

}

}


2.对于树 的常用算法总结:

1.首先树的三个遍历(先序,中序,后序)以及栈的


3.to_string()将int转换为string 以及string的to_str()将string转换为c的字符串形式


4.辅助类bitset,可以理解为存放的是bool但是优化了空间,只有一位保存每一个元素。

常用操作:

5.位操作符

&     位与

|      为或

^     异或(同 0, 异1): 作用:0 ^ N = N, N ^N = 0, N1 ^ N2 ^ N3 = N3 ^N1 ^N2

~      为反

<<    位左移(可以理解为n * 2^n)

>>     位右移 (n /= 2^n)


6.使用与不同的图的数据结构的两种遍历方法BFS(辅助队列),DFS(递归)

关键点用同的方式是用不同的方式记录节点是否已经被遍历。可用bool 数组或者map结构。


7.对于含有数字相乘之类的问题,注意乘结果越界问题。


8.backtrack回溯算法

基本过程都是

backtrack( pos)

{

if(判断后面有没有必要走)return;

if(判断是否达到条件)//process and return ;

可以选择性做一些记录,或者一些判断条件

for(int i = pos; i<end; i++)

{

if(做一些条件判断是否可以往下做)

{

更新记录;

push

backtrack(i+1)

pop

}

}

}

通常外部可以添加一些标志辅助变量。


9.atoi(char *) 如果char* 不合法,则会返回0;如果char *前几位为0,则会省略


10.常用技巧

289.Game of life 

利用位来保存状态信息。

48.Rotate Image

利用矩阵变换

73.Set Matrix Zeroes

保存状态信息


随机样本问题,从一个样本,大小为n,取k个元素,使每个元素取到的概率为k/n,关键点,

1.先依次取k个元素

2.取k+i个元素时,以概率k/k+i的概率取,替换sample中的一个元素。

 

对于矩阵,常用的搜索,DFS,BFS实现手法。以及变种。


注意指针的判定顺序,例如

while(p->val != c->next && p) 顺序有误,应该先判定是否为空,在判定是否值相等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值