
数据结构与算法
Mantana
FILED OF Machine Vision & Computer Vision
展开
-
Python实现数据结构与算法——两数相加II
题目描述:给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)输...原创 2020-04-16 03:43:34 · 387 阅读 · 1 评论 -
Python实现数据结构与算法——递归小结
递归及典型编程练习举例(Python实现)原创 2020-04-06 14:18:12 · 508 阅读 · 0 评论 -
Python实现数据结构与算法—— 二叉树的最大深度
题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。来源:力扣(LeetCode)链接:https://leetcode-cn...原创 2020-04-06 14:13:07 · 391 阅读 · 0 评论 -
Python实现数据结构与算法——Pow(x, n)
题目描述:实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0...原创 2020-04-05 17:39:24 · 1060 阅读 · 0 评论 -
Python实现数据结构与算法——第K个语法符号
题目描述:在第一行我们写上一个 0。接下来的每一行,将前一行中的0替换为01,1替换为10。给定行数 N 和序数 K,返回第 N 行中第 K个字符。(K从1开始)例子:输入: N = 1, K = 1输出: 0输入: N = 2, K = 1输出: 0输入: N = 2, K = 2输出: 1输入: N = 4, K = 5输出: 1解释:第一行: 0第二行: ...原创 2020-04-05 17:05:17 · 308 阅读 · 0 评论 -
Python实现数据结构与算法——合并两个有序链表
题目描述:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists...原创 2020-04-05 15:19:43 · 711 阅读 · 0 评论 -
Python实现数据结构与算法——斐波那契数
题目描述:斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.给定 N,计算 F(N)。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = ...原创 2020-04-04 04:14:31 · 342 阅读 · 0 评论 -
Python实现数据结构与算法——反转链表
题目描述:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-linked-li...原创 2020-04-04 03:36:17 · 327 阅读 · 0 评论 -
Python实现数据结构与算法——杨辉三角 II
题目描述:给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]进阶:你可以优化你的算法到 O(k) 空间复杂度吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/pascals-triangle-ii著作权归领扣网络所有...原创 2020-04-03 18:08:05 · 604 阅读 · 0 评论 -
Python实现数据结构与算法——两两交换链表中的节点
题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs著作权归...原创 2020-04-03 17:16:08 · 582 阅读 · 0 评论 -
Python实现数据结构与算法——反转字符串
题目描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输...原创 2020-04-03 05:12:51 · 467 阅读 · 0 评论 -
Python实习数据结构与算法——杨辉三角
题目描述:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/p...原创 2020-03-23 12:47:50 · 549 阅读 · 0 评论 -
Python实现数据结构与算法——设计链表
题目描述:设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,...原创 2020-03-21 13:57:03 · 748 阅读 · 2 评论 -
Python实现数据结构与算法——二进制求和
题目描述:给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-bina...原创 2020-03-18 02:44:02 · 457 阅读 · 0 评论 -
Python实现数据结构与算法——字符串压缩
题目描述:字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1: 输入:"aabcccccaaa" 输出:"a2b1c5a3"示例2: 输入:"abbccd" 输出:"abbccd" 解释:"a...原创 2020-03-16 03:06:06 · 3102 阅读 · 0 评论 -
Python实现数据结构与算法——对角线遍历
题目描述:给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。示例:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,4,7,5,3,6,8,9]解释:说明:给定矩阵中的元素总数不会超过 100000 。来源:力扣(LeetCode)链...原创 2020-03-14 18:57:55 · 714 阅读 · 0 评论 -
Python实现数据结构与算法——螺旋矩阵
题目描述:给定一个包含 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]]输出...原创 2020-03-14 15:24:16 · 677 阅读 · 0 评论 -
Python实现数据结构与算法——多数元素
题目描述:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 2来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maj...原创 2020-03-13 03:16:36 · 583 阅读 · 0 评论 -
Python实现数据结构与算法——至少是其他数字两倍的最大数
题目描述:在一个给定的数组nums中,总是存在一个最大元素 。查找数组中的最大元素是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的索引,否则返回-1。示例1:输入: nums = [3, 6, 1, 0]输出: 1解释: 6是最大的整数, 对于数组中的其他整数,6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1.示例2:输入: nums = [1, 2, ...原创 2020-03-12 16:29:12 · 415 阅读 · 0 评论 -
Python实现数据结构与算法——字符串的最大公因子
题目描述:对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。示例1:输入:str1 = "ABCABC", str2 = "ABC"输出:"ABC"示例2:输入:str1 = "ABABAB", str2 = "ABAB"输出:...原创 2020-03-12 02:47:31 · 303 阅读 · 0 评论 -
Python实现数据结构与算法——逆波兰表达式求值
题目描述:根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9示例2...原创 2020-03-11 18:01:24 · 466 阅读 · 0 评论 -
Python实现数据结构与算法——将数组分成和相等的三个部分
题目描述:给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + … + A[i] == A[i+1] + A[i+2] + … + A[j-1] == A[j] + A[j-1] + … + A[A.length - 1]) 就可以将数组三等分。示例1:输出...原创 2020-03-11 16:12:04 · 1634 阅读 · 0 评论 -
Python实现数据结构与算法——买卖股票的最佳时机
题目描述:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...原创 2020-03-09 21:45:56 · 557 阅读 · 0 评论 -
Python实现数据结构与算法——队列的最大值
题目描述:请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例1:输入: ["MaxQueue","push_back","push_back","max_value","pop_front","ma...原创 2020-03-09 01:59:27 · 1660 阅读 · 0 评论 -
Python实现数据结构与算法——零钱兑换
题目描述:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例2:输入: coins = [2], amount = 3输出: -1说明:...原创 2020-03-09 01:42:03 · 1062 阅读 · 0 评论 -
Python实现数据结构与算法——和为s的连续正数序列
题目描述:输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例1:输入:target = 9输出:[[2,3,4],[4,5]]示例2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]限制:1 <= target <...原创 2020-03-07 16:10:18 · 830 阅读 · 1 评论 -
Python实现数据结构与算法——有效的括号
题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示例4:输入:...原创 2020-03-06 03:43:06 · 444 阅读 · 0 评论 -
Python实现数据结构与算法——实现最小栈
题目描述:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0)...原创 2020-03-06 02:27:46 · 361 阅读 · 0 评论 -
Python实现数据结构与算法——打开转盘锁
题目描述:你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由旋转:例如把 ‘9’ 变为 ‘0’,‘0’ 变为 ‘9’ 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 ‘0000’ ,一个代表四个拨轮的数字的字符串。列表 deadends 包含了一组死亡数字,...原创 2020-03-02 17:12:37 · 399 阅读 · 0 评论 -
Python实现数据结构与算法——岛屿数量
题目描述:给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例1:输入:11110110101100000000输出:1示例2:输入:11000110000010000011来源:力扣(LeetCode)链接:https://l...原创 2020-02-27 18:43:36 · 1410 阅读 · 0 评论 -
Python实现数据结构与算法——设计循环队列
题目描述:设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyC...原创 2020-02-27 00:43:33 · 1652 阅读 · 1 评论 -
Python实现数据结构与算法——墙与门
题目描述:你被给定一个 m × n 的二维网格,网格中有以下三种可能的初始化值:-1 表示墙或是障碍物0 表示一扇门INF 无限表示一个空的房间。然后,我们用 231 - 1 = 2147483647 代表 INF。你可以认为通往门的距离总是小于 2147483647 的。你要给每个空房间位上填上该房间到 最近 门的距离,如果无法到达门,则填 INF 即可。示例:给定二维网格:IN...原创 2020-02-26 19:49:39 · 750 阅读 · 0 评论