leetcode
乖乖的函数
编程小白
展开
-
leetcode:不同的二叉搜索树 II(Python)
1. 题目描述给定一个整数 n,生成所有由 1 … n 为节点所组成的二叉搜索树。示例:输入: 3输出:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 2 1 ...原创 2019-07-01 11:23:56 · 307 阅读 · 0 评论 -
leetcode:不同的子序列(python)
1. 题目描述给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)示例 1:输入: S = “rabbbit”, T = “rabbit”输出: 3解释:如下图所示, 有 3 种可以...原创 2019-06-22 10:05:54 · 304 阅读 · 0 评论 -
leetcode:从前序与中序遍历序列构造二叉树(python)
1. 题目描述根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 72. 思路剑指offer中有这样一道题。还是利用递归,主要是根据先序遍...原创 2019-06-25 10:27:58 · 647 阅读 · 0 评论 -
leetcode:先序遍历构造二叉树(python)
1. 题目描述返回与给定先序遍历 preorder 相匹配的二叉搜索树(binary search tree)的根结点。(回想一下,二叉搜索树是二叉树的一种,其每个节点都满足以下规则,对于 node.left 的任何后代,值总 < node.val,而 node.right 的任何后代,值总 > node.val。此外,先序遍历首先显示节点的值,然后遍历 node.left,接着遍...原创 2019-06-25 09:47:08 · 833 阅读 · 0 评论 -
leetcode:买卖股票的最佳时机 III(python)
1. 题目描述给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交...原创 2019-06-17 14:14:43 · 1492 阅读 · 0 评论 -
leecde:重排链表(Python)
1. 题目描述给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, ...原创 2019-06-04 21:37:31 · 1058 阅读 · 1 评论 -
leetcode:二叉树的中序遍历(python)
1. 题目描述给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]输出: [1,3,2]2. 思路2.1 递归# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left ...原创 2019-06-04 20:06:19 · 3410 阅读 · 0 评论 -
leetcode:二叉树的先序遍历(python)
1. 题目描述给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]输出: [1,2,3]2. 思路2.1 递归二叉树的先序中序后序遍历的递归写法差不多,只是最后返回的顺序不太一样。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# ...原创 2019-06-04 16:40:43 · 316 阅读 · 0 评论 -
leetcode:买卖股票的最佳时机2(python)
1. 题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出...原创 2019-06-16 11:45:27 · 2486 阅读 · 0 评论 -
leetcode:买卖股票的最佳时机(python)
1. 题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 ...原创 2019-06-16 11:01:46 · 2411 阅读 · 1 评论 -
leetcoe:二叉树的后序遍历(Python)
1. 题目描述给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3]输出: [3,2,1]2.思路2.1 递归# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left...原创 2019-06-04 15:53:10 · 2127 阅读 · 0 评论 -
leetcode:路径总和(python)
1. 题目描述给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ ...原创 2019-06-22 10:35:36 · 262 阅读 · 0 评论 -
leetcode:买卖股票的最佳时机 IV(python)
1. 题目描述给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [2,4,1], k = 2输出: 2解释: 在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔...原创 2019-06-18 09:48:33 · 541 阅读 · 0 评论 -
leetcode:路径总和||(python)
1. 题目描述给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 ...原创 2019-06-22 11:02:17 · 220 阅读 · 0 评论 -
leetcode:不同的二叉搜索树(python)
1. 题目描述给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 ...原创 2019-07-01 09:30:11 · 379 阅读 · 0 评论 -
LeetCode:翻转链表||(python)
1. 题目描述反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL2. 思路题目要求一趟遍历。处理链表的题,一般会生成一个dummy Node,使得du...原创 2019-07-03 20:22:47 · 391 阅读 · 1 评论 -
leetcode:交错字符串(python)
1. 题目描述给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。示例 1:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出: true示例 2:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"输出: false2. 思路2.1 递归...原创 2019-06-27 14:21:13 · 861 阅读 · 0 评论 -
LeetCode:复原IP地址
1. 题目描述给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: “25525511135”输出: [“255.255.11.135”, “255.255.111.35”]2. 思路第一种方法就是暴力枚举,将**.**所有可能放的位置全部列举出来,然后在挑选符合的放法,太复杂,不考虑第二种方法就是回溯法:完整思路,在代码中说。2.1 代码class ...原创 2019-07-02 11:59:45 · 413 阅读 · 0 评论 -
leetcode:恢复二叉搜索树(python)
1. 题目描述二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例 1:输入: [1,3,null,null,2] 1 /3 \ 2输出: [3,1,null,null,2] 3 / 1 \ 2示例 2:输入: [3,1,4,null,null,2] 3 / \1 4 / 2输出: [2,1,...原创 2019-06-26 22:25:52 · 536 阅读 · 0 评论 -
leetcoe:二叉树的层次遍历||(python)
1. 题目描述给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]2. 思路层次遍历,然后反转。2.1 代码...原创 2019-06-23 11:36:30 · 518 阅读 · 0 评论 -
leetcode:将有序数组转换为二叉搜索树(python)
1. 题目描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / ...原创 2019-06-23 10:53:27 · 276 阅读 · 0 评论 -
leetcode:有序链表转二叉搜索树
1. 题目描述给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 ...原创 2019-06-23 10:33:37 · 226 阅读 · 0 评论 -
leetcode:买卖股票的最佳时机含手续费(python)
1. 题目描述给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每次交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。示例 1:输入: prices = [1, 3, 2, 8, 4, 9], fee = 2输出: 8解释:...原创 2019-06-18 13:33:02 · 1044 阅读 · 0 评论 -
leecode:最佳买卖股票时机含冷冻期(python)
1. 题目描述给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3解释: 对应的交易状态为: [买...原创 2019-06-18 11:58:00 · 287 阅读 · 0 评论 -
leetcode:填充每个节点的下一个右侧节点指针 II(python)
1. 题目描述给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。示例:解释:给定二叉树如图 A 所示,你的函数应该填充...原创 2019-06-20 13:54:48 · 392 阅读 · 0 评论 -
leetcode:二叉树中最大路径和(python)
1. 题目描述给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例 2:输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 / \ 15 7...原创 2019-06-16 10:20:08 · 3503 阅读 · 1 评论 -
leetcode:逆波兰表达式求值(Python)
1. 题目描述根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: [“2”, “1”, “+”, “3”, “*”]输出: 9解释: ((2 + 1) * 3) = 9示例...原创 2019-06-02 21:34:10 · 1376 阅读 · 0 评论 -
leetcode:求二叉树的最小深度。(Python)
1. 题目描述给定二叉树,求其最小深度。最小深度是从根节点到最近的叶节点沿最短路径的节点数。2 思路2.1 思路1因为最小深度是从根节点到最近叶节点的节点数,而叶节点是没有左右子节点的。因此可以借助求二叉树深度的递归方法,不过需要修改一下,当根节点没有左右子节点时返回1。Python代码# Definition for a binary tree node.# class TreeN...原创 2019-06-02 19:55:06 · 1054 阅读 · 0 评论 -
leecod:验证回文串(python)
1. 题目描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false2. 思路利用一个双指针,一个从前往后的left指针,一个从后往前的right指...原创 2019-06-13 20:48:40 · 686 阅读 · 0 评论 -
leetcode:加油站(Python)
1. 题目描述在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数...原创 2019-06-07 21:46:31 · 709 阅读 · 0 评论 -
leetcode:分发糖果(Python)
1. 题目描述老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例 1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。示...原创 2019-06-06 22:40:37 · 2366 阅读 · 1 评论 -
leetcode:只出现一次的数字之二(python)
1. 题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,3,2]输出: 3示例 2:输入: [0,1,0,1,0,1,99]输出: 992. 思路当某一数字出现两次的时候,我们利用异或就可以那个另两个相同的数字清零,但...原创 2019-06-06 19:47:35 · 288 阅读 · 0 评论 -
leecode:只出现一次的数字(Python)
1. 题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,3,2]输出: 3示例 2:输入: [0,1,0,1,0,1,99]输出: 992. 思路利用异或,n^n = 0, n ^ 0 = n,如果只出现一次的数字,而...原创 2019-06-06 15:30:14 · 373 阅读 · 1 评论 -
leecode:单词接龙之二(python)
1. 题目描述给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回一个空列表。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假...原创 2019-06-12 22:45:25 · 887 阅读 · 0 评论 -
leetcode:复制带随机指针的链表(python)
1. 题目描述给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。示例:输入:{“KaTeX parse error: Expected '}', got 'EOF' at end of input: …":"1","next":{"id”:“2”,“next”:null,“random”:{“KaTeX parse er...原创 2019-06-05 22:41:58 · 762 阅读 · 0 评论 -
leetcode:单词拆分2(python)
1. 题目描述给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。说明:分隔时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入:s = “catsanddog”wordDict = [“cat”, “cats”, “and”, “sand”, “do...原创 2019-06-05 17:13:46 · 659 阅读 · 0 评论 -
leetcode:克隆图(python)
1. 题目描述给定无向连通图中一个节点的引用,返回该图的深拷贝(克隆)。图中的每个节点都包含它的值 val(Int) 和其邻居的列表(list[Node])。示例:输入:{“KaTeX parse error: Expected '}', got 'EOF' at end of input: …"neighbors":[{"id”:“2”,“neighbors”:[{“KaTeX par...原创 2019-06-08 16:14:39 · 455 阅读 · 0 评论 -
leetcod:分割回文串(python)
1. 问题描述给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。(回文串是正读反读顺序一样的字符串)示例:输入: “aab”输出:[ [“aa”,“b”],[“a”,“a”,“b”]]2. 思路先将原字符串分割成左右两个部分,然后不管左边的字符串,将右边的字符串进行递归操作。但是在对右边的字符串进行递归操作之前需要验证左边的左边的字符串...原创 2019-06-08 20:48:30 · 1541 阅读 · 0 评论 -
leetcode:直线上最多的点数(Python)
题目描述给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。示例 1:输入: [[1,1],[2,2],[3,3]]输出: 3示例 2:输入: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]输出: 4思路穷举,算出每个点和其他各个点的斜率(若两个点和同一个点的斜率相同,那么这三个点在同一条直线上),计算不同斜率点的个数(别忘了把当前点...原创 2019-06-03 11:02:12 · 952 阅读 · 1 评论 -
leetcode:对链表进行插入排序(Python)
1. 题目描述对链表进行插入排序。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1-&...原创 2019-06-04 13:33:21 · 1368 阅读 · 1 评论