力扣做题心得堆放

1.栈的数组写法

int * stack = (int *)malloc(sizeof(int) * propertiesSize);
 int stackSize = 0;
stack[stackSize++] = properties[i][1];

通过减小stackSize模拟pop过程,增大来模拟push过程

2.使用uthash

力扣做题心得堆放_第1张图片

typedef struct HashTable{
    int key;
    int value;
    UT_hash_handle hh;
}HashTable;

 

力扣做题心得堆放_第2张图片

增加操作

力扣做题心得堆放_第3张图片

查找操作 

3.这个求余好骚(旋转字符串abcdef->cdefab)

力扣做题心得堆放_第4张图片

4.C#中的二维数组

public class Solution {
    public IList> Generate(int numRows) {
        IList> listAll = new List>();
            int i =1;
            while (i<=numRows)
            {
                List list = new List();
                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个节点,漂亮的回溯法

力扣做题心得堆放_第5张图片

6.

leetcode报错:

load of null pointer of type 'int'

原因1.return null时,参数列表的*returnSize没有设置为0;

2.return的数组以int array[SIZE]形式声明【会被系统回收】应该用malloc

7.滑动窗口

最近学了滑动窗口算法。

经典题目:

最小覆盖字串

字符串的排列

字母异位词

无重复字母最长字串

8.位运算+分治的骚操作

力扣做题心得堆放_第6张图片

9.

注意逻辑运算的懒惰性 

力扣做题心得堆放_第7张图片

这里我本来是没有设置abcd四个变量,全部且在一起的。因而可能会导致四个方向有些不执行。

10.

DFS/BFS遍历时可以建一个方向数组

力扣做题心得堆放_第8张图片

11.BFS求最短路径 

力扣做题心得堆放_第9张图片

其实很有套路。BFS一圈一圈搜索就是了

12.还有这种逆序遍历单调栈问题

力扣做题心得堆放_第10张图片

13.学了回溯算法

力扣做题心得堆放_第11张图片

都是这样的爆搜题。感觉蛮有套路的。基本就是如下格式:

if 边界条件

return;

循环        添加,递归,删除

14.一些简单的动态规划

力扣做题心得堆放_第12张图片

 感觉核心就是得找到f(n)和前几项的关系。

15.百题了

 力扣做题心得堆放_第13张图片

16.

如果在测试台测试通过,但是样例不通过,可能是因为全局变量没手动清空

17.注意看数值是否溢出

我这里一直没注意,原来是没有转换成long导致数值溢出了 

18.记忆化搜索

其实就是搜索(DFS)+动态规划思想。

搜索可能大量重复,动态规划列出的关系式子又建议用递推处理【如下图】,这时候就可以用记忆化搜索的方式。

我们会像动态规划一样列出状态转移方程,再采用递归形式求解。 

19.动态规划关于子序列问题

最大连续子序列和   dp[i]=max(dp[i-1]+a[i],a[i])   该点被选中

最大上升子序列元素数  dp[i]=max( dp[j]+1) 0

最大公共子序列元素数  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项的最大值

你可能感兴趣的:(数据结构与算法,leetcode,算法,职场和发展)