
算法
Marshal Zheng
CUHK-SZ PhD student
展开
-
LeetCode题解(python)-77. 组合
LeetCode题解(python)77. 组合给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]解题心得本题是组合问题,显然要用递归回溯的方法。首先找到规律,要从n个元素中取k个元素,可以视为:1. 从n-1个元素中取k个元素;2. 从n-1个元素中取k-1个元素,再加上第n个元素。这样就从C(n,k)递归回溯到C(n-1,k)原创 2020-06-06 10:39:27 · 705 阅读 · 0 评论 -
LeetCode题解(python)-75. 颜色分类
LeetCode题解(python)75. 颜色分类给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序原创 2020-06-04 13:31:54 · 487 阅读 · 0 评论 -
LeetCode题解(python)-74. 搜索二维矩阵
LeetCode题解(python)74. 搜索二维矩阵编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34, 50]]target = 3输出: true示例 2:输入:matrix = [[1, 3, 5, 7],[10, 11,原创 2020-06-04 12:47:24 · 554 阅读 · 0 评论 -
LeetCode题解(python)-73. 矩阵置零
LeetCode题解(python)73. 矩阵置零给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]解题心得本题的难点是额外空原创 2020-06-04 11:07:39 · 771 阅读 · 0 评论 -
LeetCode题解(python)-71. 简化路径
LeetCode题解(python)71. 简化路径以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外原创 2020-05-29 14:12:50 · 366 阅读 · 0 评论 -
LeetCode题解(python)-46. 全排列
LeetCode题解(python)46. 全排列题目描述给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解题心得本题——递归递归总是那么难以理解,所以不如看递归过程中发生了什么下面是测试代码和递归的...原创 2019-04-08 21:50:16 · 564 阅读 · 0 评论 -
LeetCode题解(python)-50. Pow(x, n)
LeetCode题解(python)50. 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.2...原创 2019-04-12 13:28:03 · 352 阅读 · 0 评论 -
LeetCode题解(python)-60. 第k个排列
LeetCode题解(python)60. 第k个排列题目描述解题心得解答本题,第一反应,把所有的排列都列出来,然后取第k个——毫无疑问会超时的。这时就可以从数学角度来考虑问题了。所有的排列的出现是有规律的,如下:"123""132""213""231""312""321"从第一位开始,1,2,3,第二位,2,3,1,3,1,2(除了第一位之后按照从小到大的顺序出现),...原创 2019-04-25 22:54:05 · 521 阅读 · 0 评论 -
DFS算法、BFS算法再复习-原理-实例-实现方法
DFS算法、BFS算法再复习文章目录DFS算法、BFS算法再复习深度优先遍历(DFS)实例实现方法广度优先搜索(BFS)实现方法做题时遇到了有些可以用DFS算法解决的问题,所以再复习一下DFS算法和BFS算法。深度优先遍历(DFS)访问起始顶点若当前访问的顶点的邻接顶点有未被访问的,任选一个访问,反之回退到最近访问过的顶点,直到与起始顶点相通的全部顶点都访问完毕。对连通图以上结束。对...原创 2019-04-14 10:34:33 · 704 阅读 · 0 评论 -
LeetCode题解(python)-51. N皇后
LeetCode题解(python)51. N皇后n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例:输入: 4输出: [ [".Q....原创 2019-04-14 11:32:06 · 439 阅读 · 0 评论 -
LeetCode题解(python)-54. 螺旋矩阵
LeetCode题解(python)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, ...原创 2019-04-17 20:28:50 · 520 阅读 · 0 评论 -
LeetCode题解(python)-49. 字母异位词分组
LeetCode题解(python)49. 字母异位词分组题目描述给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]解题心得依次遍...原创 2019-04-12 09:12:38 · 288 阅读 · 0 评论 -
LeetCode题解(python)-43. 字符串相乘
LeetCode题解(python)43. 字符串相乘题目描述给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1...原创 2019-04-08 12:40:18 · 374 阅读 · 0 评论 -
LeetCode题解(python)-35. 搜索插入位置
LeetCode题解(python)35. 搜索插入位置题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4...原创 2019-03-28 23:21:15 · 389 阅读 · 0 评论 -
LeetCode题解(python)-36. 有效的数独
LeetCode题解(python)36. 有效的数独题目描述判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 '.' 表示。示例 1...原创 2019-04-02 11:25:29 · 426 阅读 · 0 评论 -
LeetCode题解(python)-34. 在排序数组中查找元素的第一个和最后一个位置
LeetCode题解(python)34. 在排序数组中查找元素的第一个和最后一个位置题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target =...原创 2019-04-01 18:47:17 · 435 阅读 · 0 评论 -
LeetCode题解(python)-41. 缺失的第一个正数
LeetCode题解(python)41. 缺失的第一个正数题目描述给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。解题心得本题看似简单,...原创 2019-04-07 00:10:27 · 529 阅读 · 0 评论 -
LeetCode题解(python)-29. 两数相除
LeetCode题解(python)29. 两数相除题目描述4给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, divis...原创 2019-03-27 20:40:44 · 457 阅读 · 0 评论 -
LeetCode题解(python)-40. 组合总和 II
LeetCode题解(python)40. 组合总和 II题目描述给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10...原创 2019-04-05 22:01:50 · 373 阅读 · 1 评论 -
LeetCode题解(python)-52. N皇后 II
LeetCode题解(python)52. N皇后 II题目描述n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回 n 皇后不同的解决方案的数量。示例:输入: 4输出: 2解释: 4 皇后问题存在如下两个不同的解法。[ [".Q..", // 解法 1 "...Q",...原创 2019-04-15 12:13:10 · 243 阅读 · 0 评论 -
LeetCode题解(python)-53. 最大子序和
53. 最大子序和题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。解题心得本题需要思考怎么用更快的方式得...原创 2019-04-15 12:27:00 · 334 阅读 · 0 评论 -
LeetCode题解(python)-56. 合并区间
LeetCode题解(python)56. 合并区间题目描述给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释:...原创 2019-04-18 09:56:46 · 882 阅读 · 0 评论 -
读点《博弈论》(一)
读点《博弈论》(一)Marshal Zheng2019-06背景最近中美贸易摩擦引发各方面问题,不乏博弈论的影子。与此同时,在复习网络设计课程内容的时候,总是会想到其中的某些设计与《博弈论》中提到的诸多内容相契合,例如CSMA系列方案,争与不争,这是个问题。能够想起来《博弈论》中相关的原理,但是不是记得特别清楚,而且忘了比较专业的名字是什么了,很是烦恼,那就重读一遍,并做好笔记。正文...原创 2019-06-04 17:22:18 · 550 阅读 · 0 评论 -
LeetCode题解(python)-69. x 的平方根
LeetCode题解(python)69. x 的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。解题心...原创 2019-05-09 13:40:34 · 425 阅读 · 0 评论 -
LeetCode题解(python)-68. 文本左右对齐
LeetCode题解(python)68. 文本左右对齐题目描述给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ' ' 填充,使得每行恰好有 maxWidth 个字符。要求尽可能均匀分配单词间的空格数量。如果某一行单...原创 2019-05-09 12:53:52 · 424 阅读 · 0 评论 -
LeetCode题解(python)-59. 螺旋矩阵 II
LeetCode题解(python3)59. 螺旋矩阵 II题目描述给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]解题心得本题是螺旋矩阵I的增强版,只需要使用同样的“拐弯”规则即可。需要强烈注意的是,矩阵的初始化,...原创 2019-04-24 23:45:46 · 335 阅读 · 0 评论 -
遗传算法与蜂群算法实现效果对比
遗传算法与蜂群算法实现效果对比Marshal Zheng2019-05-03实现环境win10,matlab R2016b,python3,pycharm实现代码项目相关,暂不贴,应用的遗传算法和蜂群算法的基本框架。参考前面几篇文章。实现比较遗传算法 种群大小为50,编码长度为4bit,迭代次数为50次,交叉概率为0.9,变异概率为0.09,对某一信号处理问题的求解结果如下:...原创 2019-05-04 08:30:58 · 1961 阅读 · 0 评论 -
遗传算法与蜂群算法实现效果对比
遗传算法与蜂群算法实现效果对比Marshal Zheng2019-05-03实现环境win10,matlab R2016b,python3,pycharm实现代码项目相关,暂不贴,应用的遗传算法和蜂群算法的基本框架。参考前面几篇文章。实现比较遗传算法 种群大小为50,编码长度为4bit,迭代次数为50次,交叉概率为0.9,变异概率为0.09,对某一信号处理问题的求解结果如下:...原创 2019-05-03 22:07:08 · 2150 阅读 · 1 评论 -
人工蜂群算法-要点总结
人工蜂群算法Marshal 2019-05-03ABC算法——优化方法基本组成雇佣蜂:定位点蜜源更新公式phi = a*rand([-1,1],[1,nVar])NewPosition = PopPosition[i] + phi*(PopPosition[i]-PopPosition[k])跟随蜂:跟着采蜜侦查蜂:找初始化参数代价函数计算函...原创 2019-05-03 18:39:16 · 5230 阅读 · 1 评论 -
LeetCode题解(python)-63. 不同路径 II
LeetCode题解(python)63. 不同路径 II题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。**说明:**...原创 2019-04-28 17:03:56 · 382 阅读 · 0 评论 -
LeetCode题解(python)-58. 最后一个单词的长度
LeetCode题解(python)58. 最后一个单词的长度题目描述给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。**说明:**一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5解题心得本题较为简单,迷惑点在于字符串的最后一位或者几位是不是空格,怎么处理。...原创 2019-04-23 22:28:19 · 189 阅读 · 0 评论 -
LeetCode题解(python)-67. 二进制求和
LeetCode题解(python)67. 二进制求和题目描述给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"解题心得第一种方法:直接用二进制运算时间复杂度:O(ma...原创 2019-05-03 12:58:26 · 307 阅读 · 0 评论 -
LeetCode题解(python)-66. 加一
LeetCode题解(python)66. 加一题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3...原创 2019-05-03 11:57:05 · 302 阅读 · 0 评论 -
LeetCode题解(python)-62. 不同路径
LeetCode题解(python)62. 不同路径题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?**说明:**m 和 n 的值均不超过 100。示例 1...原创 2019-04-27 23:30:54 · 331 阅读 · 0 评论 -
LeetCode题解(python)-64. 最小路径和
LeetCode题解(python)64. 最小路径和题目描述解题心得典型的动态规划问题——最小路径和最佳子结构设计,参考前几天写的从左上角到右小角有多少种可能的路径。这里实际就是每个格子都有自己的价值(value),在走的过程中,要选择一个方向使得总路径和最小,即:从起点到当前位置之前的最小总路径价值+当前位置的价值。需要注意的是要单独考虑第一行和第一列,因为当i=0的时候,[i...原创 2019-05-01 21:29:16 · 556 阅读 · 0 评论 -
LeetCode题解(python)-61. 旋转链表
LeetCode题解(python)61. 旋转链表题目描述给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3-&...原创 2019-04-26 23:24:36 · 324 阅读 · 0 评论 -
LeetCode题解(python)-48. 旋转图像
48. 旋转图像题目描述给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2],...原创 2019-04-10 12:40:12 · 388 阅读 · 0 评论 -
软件技术(数据结构)c语言——顺序表、链表、二叉树、排序算法等
软件技术(数据结构)所有主要程序-本人手写,均调试运行通过数据结构主要程序:顺序表、链表、二叉树、排序算法等程序检查框架来源::段老师内部程序算法:Marshal Zheng程序文件名为table.cpp,源程序清单如下:/*******************************Copyright (c)**************************************...原创 2019-03-31 22:18:15 · 933 阅读 · 0 评论 -
LeetCode题解(python)-13. 罗马数字转整数
LeetCode题解(python)13. 罗马数字转整数题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M ...原创 2019-03-11 15:54:07 · 353 阅读 · 0 评论 -
LeetCode题解(python)-1002. 查找常用字符
LeetCode题解(python)1002. 查找常用字符题目描述:给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。示例 1:输入:["bella","label","roller"]输出:["e",...原创 2019-03-07 23:14:33 · 654 阅读 · 0 评论