Skip to content

Puhao/leetcode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LeetCode

##Longest Consecutive Sequence 应该是用hash查找,编译器如果支持C++ 11,则可以直接使用STD里面的hash,算法复杂度O(n),能过。这里直接使用set替代,但是set是使用红黑树实现的。

##Word Ladder 使用BFS查找,每个深度查询的时候,记录下queue的size,这样就知道这个深度下面一共有几个待检查的元素。

##Word Ladder 2 还是BFS查找,只是需要记录所有可以查找到的路径,因此不能找到就返回,需要把相同深度的便利完,才能最终确定找到,同理,每轮清除dict中的元素的时候,也是得这轮查找玩,然后再从dict中清除。有个小陷阱就是需要注意,每轮queue进入的元素可能有重复的,需要用个set确保每轮queue里面的元素是一个set集合。

##Minimum Depth of Binary Tree 就是个BFS,每个节点加入队列,查到左,右子节点都是NULL代表到了叶节点了,返回当前查找的深度。

##Balanced Binary Tree 递归求解树的高度,为了解决重复计算子节点高度问题(一遍计算高度,一遍判断是否平衡),采用后续遍历树,这样计算高度和检查是否平衡可以同时进行。

##Construct Binary Tree from Inorder and Postorder Traversal 递归构造

##Construct Binary Tree from Preorder and Inorder Traversal 递推构造

##Same Tree 递归比较下就可以了

##Merge Two Sorted Lists 递归合并

##Reverse Nodes in k-Group 通过一个reverse函数来实现k组的reverse

##Swap Nodes in Pairs 递归合并,题目要求只能常数空间的话,就使用while循环,记录一个pre指针。

##Merge k Sorted Lists 两两归并

##Generate Parentheses DFS产生所有的组合

##Valid Parentheses 用一个stack记录元素,然后配对出栈,不然就是不符合的,最后检查栈为空

##Remove Nth Node From End of List 两个指针,一个先移动n步

##Letter Combinations of a Phone Number DFS查找所有结果

##4Sum 可以两两一组,然后hash来做,降低复杂度到O(n2)

##3Sum Closest 轮询每个数,记住最小差,退化为2Sum问题

##3Sum 轮询每个数字,退化为2Sum问题

##Longest Common Prefix 把握细节

##Roman to Integer 根据罗马数字规则,进行转换.

##Integer to Roman Roman数字写法。

##Container With Most Water 头尾指针移动,数学归纳证明和排序好的数组找两个值相加为某个定值是一样的。

##Regular Expression Matching 递归比较

##Palindrome Number 从reverse integer提示,比较两头数值

##String to Integer (atoi) 考虑各种情形

##Reverse Integer 就是把输入的数的个位依次变成另外一个数的高位

##ZigZag Conversion 创建一个nRows的vector<vector >,然后按照题目意思,一个个把char放进对应的vector,最后把nRows个vector依次组成string返回

##Longest Palindromic Substring 函数f(n)表示到第n个位置最长的回文字符,则f(n+1)就是从n+1个位置开始往前最长的回文与f(n)的回文长度更大的那个回文字符

##Add Two Numbers 递归的增加,只是每次增加的时候带上进位

##Longest Substring Without Repeating Characters 设计函数f(n),到第n个位置的最长子不重复子序列长度,则f(n+1)就是比较从n+1个位置开始往前数的最长不重复子序列和f(n)两者的较大值

##Median of Two Sorted Arrays 查找第K个数,因为已经排序好,查找算法相当于二分查找方法。

##Two Sum 做个排序,然后从两头开始加,找到合适的两个数,算法复杂度O(nlogn),或者使用hash,查找item,target-item, 这样算法复杂度O(n)

About

我写的LeetCode上面的解答

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages