摘要: 一:解题思路 Time:O(n),Space:O(1) 二:完整代码示例 (C++版和Java版) C++: class Solution { public: ListNode* deleteDuplicates(ListNode* head) { ListNode* dummy = new Lis 阅读全文
posted @ 2020-04-08 21:56 repinkply 阅读(181) 评论(0) 推荐(0)
摘要: 一:解题思路 利用一个辅助哈希表来存储,中序遍历的元素和对于的下标。Time:O(n),Space:O(n) 二:完整代码示例 (C++版和Java版) C++: class Solution { private: TreeNode* buildTree(vector<int>& preorder, 阅读全文
posted @ 2020-04-08 21:25 repinkply 阅读(122) 评论(0) 推荐(0)
摘要: 一:解题思路 这道题的最简单的做法是,将数组从大到小进行排序,然后取出第k-1的那个元素。Time:O(n*log(n)),Space:O(1) 我们来写下面2种做法。 方法一:我们来维护一个top k的最小堆,遍历一次数组,将数组中的元素加入数组中,最后堆定元素就是第K大的元素。Time:O(n* 阅读全文
posted @ 2020-04-08 20:40 repinkply 阅读(157) 评论(0) 推荐(0)
摘要: 一:解题思路 二:完整代码示例 (C++版和Java版) C++: class Solution { private: vector<int> nums; vector<int> orignalNums; public: Solution(vector<int>& nums) { this->num 阅读全文
posted @ 2020-04-08 17:55 repinkply 阅读(128) 评论(0) 推荐(0)
摘要: 一:解题思路 在C++和Java中,使用最小堆或者最大堆,用一个优先队列即可。构造函数:Time:O(n*log(k)),添加函数:Time:O(log(k)) 二:完整代码示例 (C++、Java、Python) C++: class KthLargest { private: priority_ 阅读全文
posted @ 2020-04-08 16:51 repinkply 阅读(162) 评论(0) 推荐(0)
摘要: 一:解题思路 这个题目如果采用之前单身数字那个题目的方法来做,时间复杂度为O(n)。但题目的要求是O(log(n)),所以不能采用哪种方法。 这个题目可以采用二分搜索的思想来做,对于数组中的任意一个数字,1.要么等于它左边的数字,2.要么等于它右边的数字,3.要么即不等于左边的数字,又不等于它右边的 阅读全文
posted @ 2020-04-08 16:04 repinkply 阅读(143) 评论(0) 推荐(0)