- 博客(6)
- 收藏
- 关注
原创 LeetCode 208. Implement Trie (Prefix Tree)
字典树。测试中有:aaaaaaaaaaa... 的输入,如果每个节点用定长数组存储孩子的话,那就是26^len的空间复杂度(len为输入的长度),内存会不够的。所以用map保存其孩子。代码:#include #include #include using namespace std;class TrieNode{public: // Initialize
2015-07-27 19:56:00 1083
原创 LeetCode 207. Course Schedule(拓扑排序-求有向图中是否存在环)
求有向图中是否有环。法一:拓扑排序用一个队列维护所有入度为0的节点,每次弹出一个节点v,查看从v可达的所有节点u;将u的入读减一,若u的入度此时为0, 则将u加入队列。在队列为空时,检查所有节点的入度,若所有节点入度都为0, 则存在这样的一个拓扑排序 —— 有向图中不存在环。
2015-07-27 17:10:35 3676
原创 LeetCode 206. Reverse Linked List(迭代和递归两种实现)
递归的代码比迭代的代码看起来更清爽一些,也是因为递归对行为进行了抽象吧。注意到,这是一个尾递归函数,一些编译器会将它优化为迭代,这样一方面,在代码层面保持了清晰的逻辑和可读性,一方面保持了代码的性能。代码:class Solution{public: ListNode* reverseList(ListNode* head) { // return iterat
2015-07-27 14:41:15 1797
原创 LeetCode 205. Isomorphic Strings
用一个哈希表,记录字母到字母间的映射即可。代码:class Solution{public: bool isIsomorphic(string s, string t) { for (size_t i = 0; i < s.size(); ++ i) { if (dict.find(s[i]) == dict.end())
2015-07-22 22:10:00 547
原创 LeetCode 204. Count Primes
LeetCode原题和维基百科都有解释用到的Sieve of Eratosthenes算法。 该算法可在O(nloglogn)时间内,求出小于n的所有质数;空间复杂度为O(n). 随着n的增大,当空间有限时,维基百科还提出了一种分段筛选(segmented sieve)方法,在时间复杂度不变的情况下,将空间复杂度降为O(n^0.5).下面代码实现了常规筛选(regular sieve)方法:cl
2015-07-22 14:39:46 699
原创 LeetCode 203. Remove Linked List Elements
代码:class Solution {public: ListNode* removeElements(ListNode* head, int val) { for ( ; head!=nullptr && head->val==val; head = head->next) {} for (auto cur = head; cur!=nullptr
2015-07-22 14:29:29 482
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人