上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 36 下一页
摘要: 一:解题思路 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)
摘要: 一:解题思路 方法一:暴力破解法 Time:O(n^3),Space:(1) 方法二:利用双指针法可以优化时间复杂度,Time:O(n^2),Space:O(1) 二:完整代码示例 (C、C++、Java、Python) 方法一C: 方法二C: 方法一C++: class Solution { pu 阅读全文
posted @ 2020-04-07 21:10 repinkply 阅读(476) 评论(0) 推荐(0)
摘要: 一:解题思路 注意如果n大于链表长度,说明要删除的节点不在链表中,直接返回原始链表就行。Time:O(k),Space:O(1),k为链表长度 二:完整代码示例 (C++版和Java版) C++: class Solution { public: ListNode* removeNthFromEnd 阅读全文
posted @ 2020-04-07 20:29 repinkply 阅读(114) 评论(0) 推荐(0)
摘要: 一:解题思路 这是一道经典的动态规划的题目。 方法一:定义初始转态和转态转移方程。 d[0][0]=a[0][0];对于一行:d[0][j]=d[0][j-1]+a[0][j]; 对于第一列:d[i][0]=d[i-1][0]+a[i][0]; 除了第一行和第一列之外的其他元素:d[i][j]=mi 阅读全文
posted @ 2020-04-07 20:10 repinkply 阅读(177) 评论(0) 推荐(0)
摘要: 一:解题思路 一种比较容易想到的解法是定义2个记录行和列的数组,先遍历一遍原始的数组,如果出现了0,这记录到行列数组为true。然后再遍历一遍数组,如果在行列数组中标记为true了,则将所在的行列全部置0.这种方法用了2个额外的数组,空间复杂度不够低。另外一种方法可以将空间复杂度变为O(1)。Tim 阅读全文
posted @ 2020-04-07 17:41 repinkply 阅读(153) 评论(0) 推荐(0)
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 36 下一页