摘要: 一:解题思路 方法一:暴力破解法 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)
摘要: 一:解题思路 确定根节点的上下界进行不断的传递下去进行判断是否为二叉搜索树。Time:O(n),Space:O(n) 二:完整代码示例 (C++版和Java版) C++: class Solution { private: bool isValidBST(TreeNode* root, TreeNo 阅读全文
posted @ 2020-04-07 16:38 repinkply 阅读(149) 评论(0) 推荐(0)
摘要: 一:解题思路 这个题目和之前做过一道杨辉三角题目很类似,那个题目是要你求出所有的行数,而这个题目是需要你求出第几行。最优解:Time:O(n^2),Space:O(1) 二:完整代码示例 (C++版和Java版) C++: class Solution { public: vector<int> g 阅读全文
posted @ 2020-04-07 15:48 repinkply 阅读(146) 评论(0) 推荐(0)