Leetcode文章整理


LeetCode的题目种类比较多,感觉应该将自己联系过的题目进行分类,这个就是根据自己做过的题目进行划分,并做一定的总结,会持续更新


Sort:


Two Pointer:


单链表:

Reorder List将l1->l2...->ln转化为l1->ln->l2->ln-1..

这里用的很直接的方法就是找到链表的中点,然后将链表分为两部分,后半截翻转后两个链表进行融合。我在想,如果能之间把后面半截放入vector当中,就简单很多,但是就是牺牲了空间,不知道有没有更好的办法。

Insertion Sort List 将链表利用插入排序的方法进行排序

插入排序的原理就是比较当前节点和前面节点的情况,然后插入到对应的位置中去。如果直接利用插入的方法,那么需要保持的历史节点是很多的。这里有一种简单的方法,就是另外再开辟一个链表,然后进行比较依此插入就很方便。

Reverse Linked List II指定位置翻转单链表

主要是需要找到简单的方法,将不翻转的位置记录下来,翻转完后再进行连接


二叉树:

**Convert Sorted List to Binary Search Tree 将单链表表示为平衡二叉



DP(动态规划):

greedy(贪心算法):

Best Time to Buy and Sell Stock(利用贪心算法取最后面为最大值或者取最前面为最小值)


Math:

栈:
DFS:

**Combination Sum 利用DFS算法

Combination Sum II(DFS算法C数组中有重复值) 在DFS算法中一般思想就是有一个depth,然后有一个path存储这个路径上的值,然后不断进行检验,满足要求就pushback,不满足就pop

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,所以这里有一个小窍门就是将数字转化为字符串然后进行字符串的比较)

Merge Intervals融合区间,先排序后进行遍历即可,主要注意sort函数中的cmp

Recursion:
KMP:

利用了数据结构:

map:

*Fraction to Recurring Decimal判断是否是无限循环小数(利用map存储余数进行判断)

Majority Element判断数组中出现次数最多的元素




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值