magenta

LeetCode 面试题17. 打印从1到最大的n位数

左心房为你撑大大i 提交于 2020-05-06 23:18:03
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 面试题17. 打印从1到最大的n位数 题目 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 示例 1: 输入: n = 1 输出: [1,2,3,4,5,6,7,8,9] 说明: 用返回一个整数列表来代替打印 n 为正整数 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 思路1-n表示以10为倍数的最高位,再遍历即可 n个10连乘得边界值,再顺序遍历填充数组; 算法复杂度: 时间复杂度: $ {\color{Magenta}{\Omicron\left(n\right)}} $ 空间复杂度: $ {\color{Magenta}{\Omicron\left(1\right)}} $ 算法源码示例 package leetcode; /** *

LeetCode 98. 验证二叉搜索树

天大地大妈咪最大 提交于 2020-05-06 23:15:36
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 98. 验证二叉搜索树 题目 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 -所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 2 / \ 1 3 输出: true 示例 2: 输入: 5 / \ 1 4 / \ 3 6 输出: false 解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 ,但是其右子节点值为 4 。 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/validate-binary-search-tree 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 思路1-中序遍历判断是否为递增序列 二叉搜索树的中序遍历恰为一个递增序列,中序遍历并判断是否递增即可; 算法复杂度: 时间复杂度: $ {\color{Magenta}{\Omicron\left(n\right)}} $

LeetCode 155. 最小栈

混江龙づ霸主 提交于 2020-05-06 10:14:16
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 155. 最小栈 题目 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 示例: 输入: ["MinStack","push","push","push","getMin","pop","top","getMin"] [[],[-2],[0],[-3],[],[],[],[]] 输出: [null,null,null,null,-3,null,0,-2] 解释: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> 返回 -3. minStack.pop(); minStack.top(); --> 返回 0. minStack.getMin(); --> 返回 -2. 提示

LeetCode 101. 对称二叉树

隐身守侯 提交于 2020-05-06 10:13:58
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 101. 对称二叉树 题目 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 进阶: 你可以运用递归和迭代两种方法解决这个问题吗? 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/symmetric-tree 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 思路1-镜像递归校验值 步骤: 先验根节点,然后从左右节点开始镜像递归; 也可以从根开始,但其实进行了两次校验(镜像的),没有必要,因为根必然镜像; 算法复杂度: 时间复杂度: $ {\color{Magenta}{\Omicron\left(n\right)}} $ 空间复杂度: $ {\color{Magenta}{\Omicron\left(n\right)}} $ 算法源码示例

LeetCode 54. 螺旋矩阵

杀马特。学长 韩版系。学妹 提交于 2020-05-06 09:06:36
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 54. 螺旋矩阵 题目 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 输出: [1,2,3,6,9,8,7,4,5] 示例 2: 输入: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ] 输出: [1,2,3,4,8,12,11,10,9,5,6,7] 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/spiral-matrix 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 思路1-控制横向和竖向的边界值,模拟螺旋遍历 算法复杂度: 时间复杂度: $ {\color{Magenta}{\Omicron\left(n\right)}} $ 空间复杂度: $ {\color{Magenta}{\Omicron\left(1\right)}} $ 算法源码示例

LeetCode 226. 翻转二叉树

三世轮回 提交于 2020-05-06 09:05:38
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 226. 翻转二叉树 题目 翻转一棵二叉树。 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 备注: 这个问题是受到 Max Howell 的 原问题 启发的 : 谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/invert-binary-tree 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 思路1-递归互换左右子树 算法复杂度: 时间复杂度: $ {\color{Magenta}{\Omicron\left(n\right)}} $ 空间复杂度: $ {\color{Magenta}{\Omicron\left(1\right)}} $ 算法源码示例 package leetcode; /** * @author ZhouJie * @date

python使用tkinter做界面之颜色

放肆的年华 提交于 2020-05-03 20:54:45
from tkinter import * colors = '''#FFB6C1 LightPink 浅粉红 #FFC0CB Pink 粉红 #DC143C Crimson 深红/猩红 #FFF0F5 LavenderBlush 淡紫红 #DB7093 PaleVioletRed 弱紫罗兰红 #FF69B4 HotPink 热情的粉红 #FF1493 DeepPink 深粉红 #C71585 MediumVioletRed 中紫罗兰红 #DA70D6 Orchid 暗紫色/兰花紫 #D8BFD8 Thistle 蓟色 #DDA0DD Plum 洋李色/李子紫 #EE82EE Violet 紫罗兰 #FF00FF Magenta 洋红/玫瑰红 #FF00FF Fuchsia 紫红/灯笼海棠 #8B008B DarkMagenta 深洋红 #800080 Purple 紫色 #BA55D3 MediumOrchid 中兰花紫 #9400D3 DarkViolet 暗紫罗兰 #9932CC DarkOrchid 暗兰花紫 #4B0082 Indigo 靛青/紫兰色 #8A2BE2 BlueViolet 蓝紫罗兰 #9370DB MediumPurple 中紫色 #7B68EE MediumSlateBlue 中暗蓝色/中板岩蓝 #6A5ACD SlateBlue 石蓝色/板岩蓝

LeetCode 面试题06. 从尾到头打印链表

自闭症网瘾萝莉.ら 提交于 2020-05-03 20:16:07
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 面试题06. 从尾到头打印链表 题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 思路1-两次遍历,一次获得总数建数组,一次存数到数组 算法复杂度: 时间复杂度: $ {\color{Magenta}{\Omicron\left(n\right)}} $ 空间复杂度: $ {\color{Magenta}{\Omicron\left(1\right)}} $ 思路2-两次遍历,一次用栈存数据建数组,一次保存数到数组 算法复杂度: 时间复杂度: $ {\color{Magenta}{\Omicron\left(n\right)}} $ 空间复杂度:

LeetCode 面试题04. 二维数组中的查找

試著忘記壹切 提交于 2020-05-03 19:56:47
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 面试题04. 二维数组中的查找 题目 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ] 给定 target = 5,返回 true。 给定 target = 20,返回 false。 限制: 0 <= n <= 1000 0 <= m <= 1000 注意:本题与主站 240 题相同: https://leetcode-cn.com/problems/search-a-2d-matrix-ii/ 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao

LeetCode 面试题14- II. 剪绳子 II

℡╲_俬逩灬. 提交于 2020-05-03 18:06:37
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 面试题14- II. 剪绳子 II 题目 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] 。请问 k[0] k[1] ...*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1 示例 2: 输入: 10 输出: 36 解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36 提示: 2 <= n <= 1000 注意:本题与主站 343 题相同: https://leetcode-cn.com/problems/integer-break/ 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/jian-sheng-zi