1.栈的数组写法
int * stack = (int *)malloc(sizeof(int) * propertiesSize);
int stackSize = 0;
stack[stackSize++] = properties[i][1];
通过减小stackSize模拟pop过程,增大来模拟push过程
2.使用uthash
typedef struct HashTable{
int key;
int value;
UT_hash_handle hh;
}HashTable;
增加操作
查找操作
3.这个求余好骚(旋转字符串abcdef->cdefab)
4.C#中的二维数组
public class Solution {
public IList<IList<int>> Generate(int numRows) {
IList<IList<int>> listAll = new List<IList<int>>();
int i =1;
while (i<=numRows)
{
List<int> list = new List<int>();
for (int j = 1; j <=i; j++)
{
if (i <= 2)
{
list.Add(1);
}
else if (j == 1 || j == i)
{
list.Add(1);
}
else
{
list.Add(listAll[i -2][j - 2] + listAll[i - 2][j-1]);
}
}
listAll.Add(list) ;
i++;
}
return listAll;
}
}
作者:long-yu-8
链接:https://leetcode-cn.com/problems/pascals-triangle/solution/if-else-by-long-yu-8/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
5.删除链表倒数第n个节点,漂亮的回溯法
6.
leetcode报错:
load of null pointer of type 'int'
原因1.return null时,参数列表的*returnSize没有设置为0;
2.return的数组以int array[SIZE]形式声明【会被系统回收】应该用malloc
7.滑动窗口
最近学了滑动窗口算法。
经典题目:
8.位运算+分治的骚操作
9.
注意逻辑运算的懒惰性
这里我本来是没有设置abcd四个变量,全部且在一起的。因而可能会导致四个方向有些不执行。
10.
DFS/BFS遍历时可以建一个方向数组
11.BFS求最短路径
其实很有套路。BFS一圈一圈搜索就是了
12.还有这种逆序遍历单调栈问题
13.学了回溯算法
都是这样的爆搜题。感觉蛮有套路的。基本就是如下格式:
if 边界条件
return;
循环 添加,递归,删除
14.一些简单的动态规划
感觉核心就是得找到f(n)和前几项的关系。
15.百题了
16.
如果在测试台测试通过,但是样例不通过,可能是因为全局变量没手动清空
17.注意看数值是否溢出
我这里一直没注意,原来是没有转换成long导致数值溢出了
18.记忆化搜索
其实就是搜索(DFS)+动态规划思想。
搜索可能大量重复,动态规划列出的关系式子又建议用递推处理【如下图】,这时候就可以用记忆化搜索的方式。
我们会像动态规划一样列出状态转移方程,再采用递归形式求解。
19.动态规划关于子序列问题
最大连续子序列和 dp[i]=max(dp[i-1]+a[i],a[i]) 该点被选中
最大上升子序列元素数 dp[i]=max( dp[j]+1) 0<j<i,a[j] < a[i] 该点被选中
最大公共子序列元素数 dp[i][j] ={ dp[i-1][j-1] + 1 a[i]==b[j]
{ max( dp[i-1][j], ap[i][j-1] ) a[i]!=b[j]
前ij项的最大值