LeetCode的题目种类比较多,感觉应该将自己联系过的题目进行分类,这个就是根据自己做过的题目进行划分,并做一定的总结,会持续更新
Sort:
Two Pointer:
单链表:
Reorder List将l1->l2...->ln转化为l1->ln->l2->ln-1..
这里用的很直接的方法就是找到链表的中点,然后将链表分为两部分,后半截翻转后两个链表进行融合。我在想,如果能之间把后面半截放入vector当中,就简单很多,但是就是牺牲了空间,不知道有没有更好的办法。
Insertion Sort List 将链表利用插入排序的方法进行排序
插入排序的原理就是比较当前节点和前面节点的情况,然后插入到对应的位置中去。如果直接利用插入的方法,那么需要保持的历史节点是很多的。这里有一种简单的方法,就是另外再开辟一个链表,然后进行比较依此插入就很方便。
二叉树:
**Convert Sorted List to Binary Search Tree 将单链表表示为平衡二叉
DP(动态规划):
greedy(贪心算法):
Best Time to Buy and Sell Stock(利用贪心算法取最后面为最大值或者取最前面为最小值)
Math:
栈:
DFS:
**Combination Sum 利用DFS算法
Word Break( 这里可以用dfs的方法也可以利用一些数组辅助的方法更简单地解决)
简单实现:
Atoi 一个需要注意的地方就是判断是否越界的时候要把数值的值存储为龙long long类型
*Valid Number判断一个字符串是不是合法数字,主要是情况太多,算法简单
Compare Version Numbers版本号的实现比较(这里需要注意版本号的长度不一样,先选择较短的进行循环比较,再比较剩下的)
Excel Sheet Column Title数字和字符串之间的转化(26进制转化)
Factorial Trailing Zeroes计算一个数的阶乘结尾有多少的0(主要是计算其中5的个数,但是有更简单计算的方法)
Largest Number给定一个数组,数组中的数字能组成的最大的数(这里最难的地方就是,判断哪个数放在前面比较大,str1+str2>str2+str1,所以这里有一个小窍门就是将数字转化为字符串然后进行字符串的比较)
Recursion:
KMP:
利用了数据结构:
map:
*Fraction to Recurring Decimal判断是否是无限循环小数(利用map存储余数进行判断)
Majority Element判断数组中出现次数最多的元素
时间: 2024-10-10 04:19:00