摘要:题意:通过Trie求前缀和,相同字符串取最新的值。 class TrieNode{ public: int val; TrieNode *nex[26]; TrieNode(){ val = 0; for(int i = 0; i < 26; ++i){ nex[i] = NULL; } } }; 阅读全文
posted @ 2020-04-02 17:25 Somnuspoppy 阅读 (2) 评论 (0) 编辑
摘要:题意:实现Trie class TrieNode{ public: bool isword; TrieNode* nex[26]; TrieNode():isword(false){ for(int i = 0; i < 26; ++i) nex[i] = NULL; } }; class Trie 阅读全文
posted @ 2020-04-02 15:55 Somnuspoppy 阅读 (5) 评论 (0) 编辑
摘要:题意:归并两个有序数组,把归并结果存到第一个数组上。 class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int pos1 = m - 1; int pos2 = n 阅读全文
posted @ 2020-04-01 00:37 Somnuspoppy 阅读 (7) 评论 (0) 编辑
摘要:题意:寻找二叉查找树中出现次数最多的值 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : v 阅读全文
posted @ 2020-04-01 00:02 Somnuspoppy 阅读 (3) 评论 (0) 编辑
摘要:题意:在二叉查找树中查找两个节点之差的最小绝对值 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x 阅读全文
posted @ 2020-03-31 23:31 Somnuspoppy 阅读 (6) 评论 (0) 编辑
摘要:题意:求排序后相邻元素间的最大差值。 分析:因为要求T(n)=S(n)=O(n),所以基数排序。 class Solution { public: int rank[10000010]; int cnt[10]; void RadixSort(vector<int>& nums, int base) 阅读全文
posted @ 2020-03-30 17:29 Somnuspoppy 阅读 (3) 评论 (0) 编辑
摘要:题意:按颜色进行排序。 分析:荷兰国旗问题三分partition S(n)=O(1) class Solution { public: void sortColors(vector<int>& nums) { int len = nums.size(); int less = -1; int mor 阅读全文
posted @ 2020-03-30 17:08 Somnuspoppy 阅读 (5) 评论 (0) 编辑
摘要:题意:按照字符出现次数对字符串排序。 class Solution { public: map<char, int> mp; vector<char> v[1000010]; string frequencySort(string s) { int len = s.size(); for(int i 阅读全文
posted @ 2020-03-30 14:36 Somnuspoppy 阅读 (4) 评论 (0) 编辑
摘要:题意:求出现频率最多的 k 个元素。 分析:统计每个元素出现次数,按出现次数将元素分组,然后按频率从高到低取k个元素。 class Solution { public: vector<int> v[100010]; vector<int> topKFrequent(vector<int>& nums 阅读全文
posted @ 2020-03-30 10:56 Somnuspoppy 阅读 (3) 评论 (0) 编辑
摘要:题意:数组求第k大。 分析:快排 class Solution { public: int Partition(vector<int>& nums, int l, int r){ int p = nums[l]; while(l < r){ while(l < r && nums[r] >= p) 阅读全文
posted @ 2020-03-29 22:10 Somnuspoppy 阅读 (4) 评论 (0) 编辑
摘要:E 题意:给定一棵n个点的树,问是否能找到一条路径,使k个点要么在路径上,要么距路径长度为1。 分析:LCA #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #inclu 阅读全文
posted @ 2020-03-28 19:40 Somnuspoppy 阅读 (3) 评论 (0) 编辑
摘要:题意:在BST中寻找两个节点,使它们的和为一个给定值。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(in 阅读全文
posted @ 2020-03-26 00:12 Somnuspoppy 阅读 (7) 评论 (0) 编辑
摘要:题意:根据有序链表构造平衡的二叉查找树。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) 阅读全文
posted @ 2020-03-25 21:48 Somnuspoppy 阅读 (6) 评论 (0) 编辑
摘要:题意:从有序数组中构造平衡的BST。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : va 阅读全文
posted @ 2020-03-25 21:33 Somnuspoppy 阅读 (5) 评论 (0) 编辑
摘要:题意:二叉树求两点LCA。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), 阅读全文
posted @ 2020-03-24 22:42 Somnuspoppy 阅读 (7) 评论 (0) 编辑