摘要: 思路:经典的dp题目,应该是新建一个dp表,dp[i][j]表示从左上角到grid[i][j]的最短路径,因为只能往下和往右走,因此dp[i][j] = min(dp[i 1][j], dp[i][j 1]) + grid[i][j],经过压缩后可以使用一维的dp表,但是更新每个dp[i][j]只需 阅读全文
posted @ 2019-08-14 10:46 Dolisun 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 动态规划问题,稍后更新思路 进行空间压缩: python class Solution(object): def coinChange(self, coins, amount): """ :type coins: List[int] :type amount: int :rtype: int """ 阅读全文
posted @ 2019-08-13 20:59 Dolisun 阅读(1002) 评论(0) 推荐(0) 编辑
摘要: 思路:跟上一篇的之字形打印思路类似,只不过不用隔层翻转打印 阅读全文
posted @ 2019-08-13 08:50 Dolisun 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 思路:之前遇到过层序打印二叉树的题,使用一个队列存储每一层的节点,当一个节点出队列时,他的左右孩子入队列。那么这个问题是在这个问题的基础上加了点限制,因此我们也可以在之前的思路上稍作修改。 首先用curLayer作为队列存储当前层的所有节点,把这一层标记成0或者1, 再用nextLayer层存储从c 阅读全文
posted @ 2019-08-12 21:48 Dolisun 阅读(748) 评论(0) 推荐(0) 编辑
摘要: ```python # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def isSymmetrical(self... 阅读全文
posted @ 2019-08-12 16:37 Dolisun 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 思路: 分4种情况: 1. 当该节点存在右子树时,那么下一个节点一定在右子树中产生 这种情况下又分成两种情况: (1)右子树不存在左分支,那么要找的下一个节点就是右子树的根节点。 (2)右子树中存在左分支,那么不停的寻找左分支的左分支就可以了。 2.当该节点不存在右子树时,那么下一个节点一定在该节点 阅读全文
posted @ 2019-08-12 15:12 Dolisun 阅读(587) 评论(0) 推荐(0) 编辑
摘要: 思路:因为重复的节点都要删除,因此需要标记重复开始前的上一个节点,又因为头结点有可能是重复的节点,为了操作方便,我们可以再链表前面设置一个空节点作为头结点,因此需要设置3个指针,第一个head指向头结点。第二个p用来标记重复节点的前面一个节点,第三个cur用来寻找重复的节点,一旦找到p就不移动了,c 阅读全文
posted @ 2019-08-12 09:03 Dolisun 阅读(1035) 评论(0) 推荐(0) 编辑
摘要: 思路:转自https://www.nowcoder.com/questionTerminal/253d2c59ec3e4bc68da16833f79a38e4 链接:https://www.nowcoder.com/questionTerminal/253d2c59ec3e4bc68da16833f 阅读全文
posted @ 2019-08-11 22:39 Dolisun 阅读(688) 评论(0) 推荐(0) 编辑
摘要: 思路:参考https://blog.csdn.net/u010005281/article/details/80200398 阅读全文
posted @ 2019-08-11 20:02 Dolisun 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 思路:题目比较简单,之间遍历一遍数组,不存在的话将这个值放入列表,否则输出这个值 阅读全文
posted @ 2019-08-11 18:54 Dolisun 阅读(2102) 评论(0) 推荐(0) 编辑