03 2016 档案
摘要:题目来源: https://leetcode.com/problems/palindrome-partitioning-ii/ 题意分析: 给定一个s,可以将s拆成若干个回文子字符串之和,如果拆成了m个子字符串,那么我们称s可以被m-1 cut。那么返回s的最小cut。 题目思路: 这是一个动态规划
阅读全文
摘要:题目来源: https://leetcode.com/problems/palindrome-partitioning/ 题意分析: 给定一个字符串s,将s拆成若干个子字符串,使得所有的子字符串都是回文字符串,返回所有这样的子字符串集合。比如s = “aab”,那么返回[["aa","b"],["a
阅读全文
摘要:题目来源: https://leetcode.com/problems/surrounded-regions/ 题意分析: 给定给一个二维的板,这个板只包括‘X’和‘O’。将被‘X’包围的‘O’变成‘X’。比如: 题目思路: 从板的周围出发,从周围的‘O’出发深度搜索,能搜到的‘O’用visit记录
阅读全文
摘要:题目来源: https://leetcode.com/problems/sum-root-to-leaf-numbers/ 题意分析: 一棵树,从跟节点到叶子节点比如1->2那么这个叶子代表12,计算所有叶子的和。 题目思路: 这题主要是怎么计算叶子的数值。leaf = node.sum * 10
阅读全文
摘要:题目来源: https://leetcode.com/problems/longest-consecutive-sequence/ 题意分析: 给定一个没有排好序的数组,找到最长的连续序列的长度。要求时间复杂度是O(n)。比如[100, 4, 200, 1, 3, 2],其最长长度是[1,2,3,4
阅读全文
摘要:题目来源: https://leetcode.com/problems/word-ladder/ 题意分析: 和上一题目类似,给定一个beginWord和一个endWord,以及一个字典list。这题需要的是要beginWord转化成endWord的最短路径长度。 题目思路: 最短路的思路。将beg
阅读全文
摘要:题目来源: https://leetcode.com/problems/word-ladder-ii/ 题意分析: 给定一个beginWord和一个endWord,以及一个字典单词,找出所有从beginWord变成endWord的所有最短路径,单词变化每次只能变一个字母,所变的字母必须在字典里面。
阅读全文
摘要:题目来源: https://leetcode.com/problems/valid-palindrome/ 题意分析: 给定一个字符串,只保留字符,并将其转化成小写字母,判断他是否回文字符串。 题目思路: 首先要判断是否字符,.isalnum(),然后就直接是判断是否回文的问题了。 代码(pytho
阅读全文
摘要:题目来源: https://leetcode.com/problems/binary-tree-maximum-path-sum/ 题意分析: 给定一棵树,找出一个数值最大的路径,起点可以是任意节点或者叶子。 题目思路: 我们可以先找路径的最大mr,ml,那么最大值是max(solve(root),
阅读全文
摘要:题目来源: https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/ 题意分析: 和上题类似,array[i]代表第i天物品价格,如果只能交易2次。问最大利润。 题目思路: 这是一个动态规划问题。不难想到把整个数组拆成两部分
阅读全文
摘要:题目来源: https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/ 题意分析: 和上题类似,给定array,代表第i天物品i的价格。如果可以交易无数次(手上有物品不能买),问最高利润。 题目思路: 记录当前最小值,如果遇到a
阅读全文
摘要:题目来源: https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ 题意分析: 给定一个数组,代表array[i] 代表第i天的价格。问买买卖这个物品一次的最高利润是多少(i买,j卖,j > i)。 题目思路: 记录当前最小值,如
阅读全文
摘要:题目来源: https://leetcode.com/problems/triangle/ 题意分析: 给定一个三角数组。找到自顶向下的最短路径。如: 题目思路: 直接求出所有的自顶向下路径。ans [i][j] = min(ans[i-1][j],ans[i- 1][j + 1]) + trian
阅读全文
摘要:题目来源: https://leetcode.com/problems/pascals-triangle-ii/ 题意分析: 给定一个整数k,返回第k层的Triangle。 题目思路: 根据Triangle规则,直接计算即可。 代码(python):
阅读全文
摘要:题目来源: https://leetcode.com/problems/pascals-triangle/ 题意分析: 给定一个整数,输出N层的Triangle 。 题目分析: 直接根据Triangle的定理,ans[i][j] = ans[i - 1][j] + ans[i - 1][j + 1]
阅读全文
摘要:题目来源: https://leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/ 题意分析: 根据上一题,如果给定的树不是完全树同层的连接。要求常数空间时间复杂度。如: 题目思路: 用两个指针来记录下一个指针和下一
阅读全文
摘要:题目来源: https://leetcode.com/problems/populating-next-right-pointers-in-each-node/ 题意分析: 给定一个二叉完全树,将同一层的节点连起来,其中最后一个节点连接到NULL。如 题目思路: 由于是完全树。首先,将所有节点的左子
阅读全文
摘要:题目来源: https://leetcode.com/problems/distinct-subsequences/ 题意分析: 给定字符串S和T,判断S中可以组成多少个T,T是S的子串。 题目思路: 这是一个动态规划的问题。设定ans[i][j]为s[:i] 组成t[:j]的个数。那么动态规划方程
阅读全文
摘要:题目来源: https://leetcode.com/problems/flatten-binary-tree-to-linked-list/ 题意分析: 给出一个二叉树,将这个二叉树变成一个单链形式。 题目思路: 递归的思想,先将根节点连接左子树,然后再连接右子树。 代码(python): # D
阅读全文
摘要:题目来源: https://leetcode.com/problems/path-sum-ii/ 题意分析: 给出一个二叉树和一个整数,返回所有从根节点到叶节点的和等于这个整数的路径。 题目思路: 这题和上一题类似,直接深度递归。记录左子树和sum - 根的值的答案,以及右子树和sum- 根的值的答
阅读全文
摘要:题目来源: https://leetcode.com/problems/path-sum/ 题意分析: 给出一个树和一个整数,判断这棵树是否有一条从根到叶节点的路径,使得路径之和为给定的整数。 题目思路: 这题还是用递归的思想。如果根节点的左右子树都为空,那么返回根的值是否等于sum,否者,sum
阅读全文
摘要:题目来源: https://leetcode.com/problems/minimum-depth-of-binary-tree/ 题意分析: 返回一颗二叉树从根部到叶子的最低高度。 题目思路: 如果根节点为空,那么返回0,如果左子树为空,返回右子树的最低高度+1,右子树为空,返回左子树最低高度+1
阅读全文
摘要:题目来源: https://leetcode.com/problems/balanced-binary-tree/ 题意分析: 判断一棵树是不是平衡树。 题目思路: 如果左子树高度和右子树高度差小于等于1,并且左子树是平衡树,右子树是平衡树,那么这棵树是平衡树。那么我们先用一个新的函数返回树的高度和
阅读全文
摘要:题目来源: https://leetcode.com/problems/convert-sorted-list-to-binary-search-tree/ 题意分析: 给定一个排好序的链表,将这个链表转换成一个高度平衡树。 题目思路: 有一个偷懒的方法,将链表转换成一个数组,然后用上一题的解法解决
阅读全文
摘要:题目来源: https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 题意分析: 给出一个排好序的数组,根据这个数据形成一个高度平衡的搜索二叉树。 题目思路: 将中位数为根节点,中位数左边为左子树,右边为右子树
阅读全文
摘要:题目来源: https://leetcode.com/problems/binary-tree-level-order-traversal-ii/ 题意分析: 从底向上宽度遍历二叉树。 题目思路: 自顶向下遍历二叉树后将答案翻转。 代码(python): # Definition for a bin
阅读全文
摘要:题目来源: https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/ 题意分析: 给出一颗二叉树的中序遍历和后续遍历,还原这个树。 题目思路: 这题和上一题类似,用递归的思想,先
阅读全文
摘要:题目来源: https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 题意分析: 根据二叉树的中序和前序遍历结果,反推这个树,假设只有一个这样的树。 题目思路: 前序遍历的第一个树
阅读全文
摘要:题目来源: https://leetcode.com/problems/maximum-depth-of-binary-tree/ 题意分析: 返回一个树的最大层数。 题目思路: 这里用递归的思想,maxlevel = max( maxleft, maxright) + 1. 代码(python):
阅读全文
摘要:题目来源: https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/ 题意分析: Z字宽度遍历树。 题目思路: 这题可以用比较取巧的方法。首先获得宽度遍历的结果,然后将第二层的翻转就可以了。 代码(python):
阅读全文
摘要:题目来源: https://leetcode.com/problems/binary-tree-level-order-traversal/ 题意分析: 宽度优先搜索一颗二叉树,其中同一层的放到同一个list里面。比如: 3 / \ 9 20 / \ 15 7返回 [ [3], [9,20], [1
阅读全文
摘要:题目来源: https://leetcode.com/problems/symmetric-tree/ 题意分析: 判断一棵树是不是镜像树。 题目思路: 判断左子树的左右子树是不是和右子树的右左子树相同。 代码(python): # Definition for a binary tree node
阅读全文
摘要:题目来源: https://leetcode.com/problems/same-tree/ 题意分析: 判断两棵树是否相等。 题目思路: 用递归的思想,先判断根节点,再判断左右子树。 代码(python): # Definition for a binary tree node. # class
阅读全文
摘要:题目来源: https://leetcode.com/problems/recover-binary-search-tree/ 题意分析: 二叉搜索树中有两个点错了位置,恢复这棵树。 题目思路: 如果是没有空间复杂度限制还是比较简单。首先将树的值取出来,然后排序,将相应的位置判断是否正确。如果要特定
阅读全文
摘要:题目来源: https://leetcode.com/problems/validate-binary-search-tree/ 题意分析: 给定一个二叉树,判断这个二叉树是否二叉搜索树,也就是严格按照左子树小于等于节点和右子树。 题目思路: 树的题目,我们首先想到的就是递归的思想。这里也可以用递归
阅读全文

浙公网安备 33010602011771号