
算法
文章平均质量分 59
HappyRocking
坚信强人工智能的到来
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
三大决策树的比较——ID3、C4.5、CART
类型ID3C4.5CART解决问题分类分类分类、回归划分指标信息增益增益率基尼指数指标特点会偏向可取值数目加多的属性会偏向可取值数目较少的属性划分规则选择信息增益最大的属性先找出信息增益高于平均水平的属性,再从中选择增益率最高的选择划分后基尼指数最小的属性优缺点DI3会偏向可取值数目加多的属性ID3算法并未给出处理连续数据的方法ID3算法不能处理带有缺失值的数据集ID3算法只有树的生成, 所以容易过拟合C4.5可以处理连续值C4.5...原创 2020-08-26 18:04:51 · 1848 阅读 · 0 评论 -
Leetcode算法——58、最后单词的长度(length of last word)
给定一个字符串,包含大小写字母和空格。返回字符串中最后一个单词的长度。如果最后一个单词不存在,返回0。备注:一个单词定义为不包含空格的字符序列。示例:Input: "Hello World"Output: 5思路从后向前,寻找到第一个出现的非空格。然后继续向前,寻找到第一个出现的空格。两者之间的单词即为最后一个单词。比如输入 “Hello World”,从后向前,第一个出现...原创 2018-12-13 12:37:34 · 391 阅读 · 0 评论 -
Leetcode算法——51~52、n皇后问题
n皇后问题需要将n个皇后放置在n*n的棋盘上,保证任意两个皇后都不能处于同一行、同一列或同一斜线上。给定一个整数n,返回n皇后问题的所有不重复的解。每个解都是一种n个皇后的布局,其中 ‘Q’ 和 ‘.’ 分别代表皇后和空白。示例:Input: 4Output: [ [".Q..", // Solution 1 "...Q", "Q...", &quo原创 2018-12-06 13:05:59 · 770 阅读 · 0 评论 -
Leetcode算法——48、全排列II
给定一系列数字,可能会包含重复数字,返回所有可能的唯一的排列。示例:Input: [1,1,2]Output:[ [1,1,2], [1,2,1], [2,1,1]]思路本题与上一题 Leetcode算法——46、全排列 很相似,不同之处在于,上一题的元素都是无重复的,而本题的元素允许重复,但是要求返回无重复的排列。上一题我们使用了 4 种方法来解决全排列问题,本题我...原创 2018-12-03 12:55:11 · 417 阅读 · 0 评论 -
Leetcode算法——50、实现乘方运算
实现函数 pow(x,n),返回 xnx^nxn。备注:1、-100.0 < x < 100.02、n是一个32位的整数,范围为[−231,231−1][−2^{31}, 2^{31} − 1][−231,231−1]示例:Example 1:Input: 2.00000, 10Output: 1024.00000Example 2:Input: 2.10000, ...原创 2018-12-05 12:38:17 · 946 阅读 · 0 评论 -
Leetcode算法——45、跳跃游戏II
给定一个非负整数的数组,每一个元素表示从当前位置开始跳跃一次的最大长度。你一开始站在第一个索引的位置。你的目标是用最少的跳跃次数到达最后一个索引位置。输出跳跃次数。备注:假设肯定可以跳到最后一个位置。示例:Input: [2,3,1,1,4]Output: 2Explanation: The minimum number of jumps to reach the last ind...原创 2018-11-28 13:48:19 · 795 阅读 · 0 评论 -
Leetcode算法——46、全排列
给定一个无重复整数数组,返回所有可能的排列。示例:Input: [1,2,3]Output:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]思路1、字典序法使用字典序法不断寻找当前排序的下一个排序,直至返回到了起始序列。2、深度优先搜索使用递归法,维护一个结果数组、以及每个元素对应的剩余元素...原创 2018-11-30 12:37:41 · 876 阅读 · 0 评论 -
Leetcode算法——49、字符串分组(group anagrams)
给定一个字符串数组,将所有字符串分组,每一组的字符串包含的字符相同但是顺序不同。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["b原创 2018-12-04 12:40:29 · 2515 阅读 · 0 评论 -
Leetcode算法——55、跳跃游戏
给定一个非负整数的数组,每一个元素表示从当前位置开始跳跃一次的最大长度。你一开始站在第一个索引的位置。判断你是否可以跳跃到最后一个索引位置。示例:Example 1:Input: [2,3,1,1,4]Output: trueExplanation: Jump 1 step from index 0 to 1, then 3 steps to the last index.Exa...原创 2018-11-26 12:35:52 · 544 阅读 · 4 评论 -
Leetcode算法——44、正则式匹配
给定一个输入字符串 s 和一个模式字符串 p,实现正则匹配,支持’?‘和’*’。规则:‘?’ 可以匹配任何单个字符‘*’ 可以匹配任何字符的序列(包括空序列)需要匹配整个输入字符串 s,不能部分匹配。备注:字符串 s 只会包含小写 a-z,可以为空。字符串 p 只会包含小写 a-z、? 或 *,可以为空。Example 1:Input:s = “aa”p = “a”...原创 2018-11-23 13:22:19 · 1174 阅读 · 0 评论 -
Leetcode算法——42、雨水容量
给定n个非负整数,代表一个高程地图,每个整数表示一个挡板,挡板高度为整数值,挡板宽度均为1(即挡板都是紧挨的,之间没有缝隙)。计算下雨之后,整体可以存储多少水。示例:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:高度图如下:那么下雨时,两个柱子之间如果有低谷,则会存储雨水,如下:有 A、B、C三个低谷可以存储雨水,雨水总面积为 1+4+1...原创 2018-11-20 13:11:10 · 1612 阅读 · 0 评论 -
Leetcode算法——43、字符串相乘
给定两个非负整数字符串 num1 和 num2,返回两个数的乘积字符串。备注:两个整数字符串的长度都 < 110。两个数都只包含数字 0-9。两个数都不以0开头,除非整个字符串就是0.不能使用任何内置的大整数库,不能将输入字符串直接转为整数。示例:Example 1:Input: num1 = "2", num2 = "3"Output: "6"Example 2:...原创 2018-11-22 12:35:27 · 796 阅读 · 0 评论 -
Leetcode算法——41、寻找缺失的正数
给定一个乱序的整数数组,找到最小的缺失的正整数。示例:Example 1:Input: [1,2,0]Output: 3Example 2:Input: [3,4,-1,1]Output: 2Example 3:Input: [7,8,9,11,12]Output: 1思路1、标记法如果 nums 的长度为 l,则结果肯定是在 1 ~ (l+1) 中的某个数。这是因...原创 2018-11-19 12:59:50 · 661 阅读 · 0 评论 -
Leetcode算法——39、组合之和
给定一个无重复元素的数组 candidates 和一个目标数 target,找到 candidates 中所有可以使数字之和等于 target 的组合。candidates 中的数字可以无限制重复被选取。备注:数组的元素和目标值都是正数。答案中不能有重复组合。示例:Example 1:Input: candidates = [2,3,6,7], target = 7,A solut...原创 2018-11-15 12:44:36 · 316 阅读 · 0 评论 -
Leetcode算法——40、组合之和II
给定一个数组 candidates 和一个目标数 target,找到 candidates 中所有可以使数字之和等于 target 的组合。数组中的每个元素只可以使用一次。备注:数组的元素和目标值都是正数。答案中不能有重复组合。Example 1:Input: candidates = [10,1,2,7,6,1,5], target = 8,A solution set is:[...原创 2018-11-16 12:47:14 · 332 阅读 · 0 评论 -
Leetcode算法——37、求解数独
编写程序,来求解一个数独问题。一个数独的答案必须满足以下规则:1-9的每个数字都必须在每一行中都只出现一次1-9的每个数字都必须在每一列中都只出现一次1-9的每个数字都必须在每一个3*3的小方块中都只出现一次空格子用.表示。思路求解数独问题,用人脑来解决,一般思路是:1、观察全局,根据3个数独规则,查看哪些空白只有一种可能性,直接填补上这个数。2、然后这个填补的数,又会影响到...原创 2018-11-12 21:31:35 · 1307 阅读 · 0 评论 -
Leetcode算法——38、数数并说
数数并说序列是一个整数序列,第二项起每一项的值为对前一项的记数,其前五项如下:1112112111112211 读作 “1个1”,即 1111 读作 “两个1”,即 2121 读作 “一个2,一个1”,即 1211给定一个整数n,1 ≤ n ≤ 30,生成数数并说序列的第 n 项。备注:该整数序列的每一项都输出为字符串。示例:Example 1:Input: 1Ou...原创 2018-11-14 12:34:51 · 390 阅读 · 0 评论 -
Leetcode算法——33、查询有序旋转数组
给定一个数组,这个数组是由一个升序数组进行左旋或右旋若干次得到的。比如,[0,1,2,4,5,6,7] 可能会变为 [4,5,6,7,0,1,2]给定一个目标值,去数组中查询这个值。如果找到,则返回索引,否则返回-1。可以假设数组中没有重复值。算法复的时间复杂度必须为 O(logn)。示例:Example 1:Input: nums = [4,5,6,7,0,1,2], target...原创 2018-11-05 12:52:39 · 1676 阅读 · 0 评论 -
Leetcode算法——53、子数组的最大和
给定一个整数数组,找到连续子数组(至少包含一位)的最大和,并返回。示例:Input: [-2,1,-3,4,-1,2,1,-5,4],Output: 6Explanation: [4,-1,2,1] has the largest sum = 6.思路1、分治法nums 的连续子数组的最大和,就等于以下三者中的最大值:nums[:mid] 的连续子数组的最大和nums[mid...原创 2018-12-07 12:43:15 · 701 阅读 · 0 评论 -
Leetcode算法——59、螺旋矩阵II(square matrix II)
给定一个正整数 n,要求生成一个方阵,里面的元素为1到n^2按照螺旋顺序排列。示例:Input: 3Output:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]思路可以参考 Leetcode算法——54、螺旋矩阵(spiral matrix),不同之处在于,54 题是给定一个矩阵,求螺旋顺序的序列;本题是给定一个序列,要求按螺旋顺序生成一个矩...原创 2018-12-14 12:51:14 · 695 阅读 · 1 评论 -
Leetcode算法——62、不重复路径(unique paths)
一个机器人位于一个m*n的网格的左上角。它每次只能向下或向右移动一格。它试图到达网格的右下角。求有多少种不重复的路径?备注:m和n最大为100.示例1:Input: m = 3, n = 2Output: 3Explanation:From the top-left corner, there are a total of 3 ways to reach the bottom-r...原创 2018-12-20 12:39:05 · 3093 阅读 · 0 评论 -
Python——使用scipy求解带约束的最优化问题
我们要求解的最优化问题的形式如下:min f(x)s.t.gi(x)>0,i=1,...,mhj(x)=0,j=1,...,n\begin{aligned}min \ f(x) \\s.t.\quad g_i(x)& \gt 0, i = 1,...,m\\\quad h_j(x)& = 0, j = 1,...,n\end{al...原创 2019-06-17 10:17:48 · 49255 阅读 · 11 评论 -
Leetcode算法——72、编辑距离(edit distance)
给定两个单词 word1 和 word2,找到将 word1 转化为 word2 所需的最少操作步数。(这个步数称为两个单词的编辑距离)对一个单词可以执行以下三种操作:1、插入一个字符2、删除一个字符3、替换一个字符示例:Example 1:Input: word1 = "horse", word2 = "ros"Output: 3Explanation: horse ->...原创 2019-01-15 13:18:21 · 1606 阅读 · 0 评论 -
Leetcode算法——69、sqrt(x)
完成函数 int sqrt(int x)。计算并返回 x 的平方根,其中 x 是一个非负整数。返回结果去掉小数,只保留整数。示例:Example 1:Input: 4Output: 2Example 2:Input: 8Output: 2Explanation: The square root of 8 is 2.82842..., and since ...原创 2019-01-02 13:01:19 · 622 阅读 · 0 评论 -
Leetcode算法——65、有效数字(valid number)
判断一个字符串是否可以被翻译为一个小数。在一个有效的小数中,可能存在的字符有:1、数字0-92、正负号 +/-3、小数点 .示例:"0" => true" 0.1 " => true"abc" => false"1 a" => false"2e10" => true" -90e3 " =&原创 2018-12-26 12:38:59 · 856 阅读 · 0 评论 -
Leetcode算法——71、简化路径(simplify path)
给定一个文件的绝对路径(unix系统),将其简化。在unix文件系统中,’.’ 表示当前目录,因此可以被忽略。’…’ 表示上一个目录,因此需要取消掉最后一层目录。示例:path = "/home/", => "/home"path = "/a/./b/../../c/", => "/c"path = "/a/../../b/../c//.//", => &q原创 2019-01-10 12:44:09 · 1268 阅读 · 0 评论 -
Leetcode算法——64、最小路径之和(minimum path sum)
给定一个 m*n 的非负整数矩阵,找到一条路径,从左上角到右下角,要求这条路径上的所有数组之和最小。备注:每次只能向下或向右移动。Input:[ [1,3,1], [1,5,1], [4,2,1]]Output: 7Explanation: Because the path 1→3→1→1→1 minimizes the sum.思路本题与 不重复路径I、不重复路径I...原创 2018-12-25 12:19:47 · 887 阅读 · 0 评论 -
Leetcode算法——70、爬楼梯(climbing stairs)
你正在爬楼梯,共有 n 层台阶。每次可以爬 1 层或 2 层。问有多少种不重复的方法可以从楼梯底爬到楼梯顶。思路爬n层台阶,可以根据第一步的层数,将所有爬法分为两类:第一步爬1层,然后继续爬剩下的n-1层第一步爬2层,然后继续爬剩下的n-2层这两种方法是互斥且完备的。因此,n层的爬法 = (n-1) 层的爬法 + (n-2) 层的爬法。即斐波那契数列。python实现de...原创 2019-01-04 12:37:56 · 718 阅读 · 0 评论 -
Leetcode算法——61、旋转链表(rotate list)
给定一个链表,将其向右旋转k次,k为非负值。示例:Example 1:Input: 1->2->3->4->5->NULL, k = 2Output: 4->5->1->2->3->NULLExample 2:Input: 0->1->2->NULL, k = 4Output: 2->0-&原创 2018-12-19 12:41:59 · 430 阅读 · 0 评论 -
Leetcode算法——68、文本对齐(text justification)
给定一个单词序列和一个最大宽度maxWidth,将文本进行格式化,每一行的字符长度为maxWidth。需要使用贪婪的方法来格式化:在每一行中放入尽可能多的单词。有必要的话,可以添加额外的空格’ ',来保证每行的长度严格等于maxWidth。单词之间的空格要尽可能均分。如果一行中的空格数量不能被均分,则左边的空位要比右边的空位包含的空格数要多。特殊规则:文本的最后一行,在单词之间只能出现一个空...原创 2018-12-29 12:41:30 · 1427 阅读 · 0 评论 -
Leetcode算法——57、插入区间(insert interval)
给定一系列不重复的区间,要求将一个新的区间插入到这些集合中(如果有必要,则合并)。假设这些区间已经根据起始位置排好序了。示例1:输入: intervals = [[1,3],[6,9]], newInterval = [2,5]输出: [[1,5],[6,9]]示例2:输入: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInt...原创 2018-12-12 12:41:43 · 868 阅读 · 0 评论 -
Leetcode算法——67、二进制数相加(add binary)
给定两个二进制字符串,返回他们的和(也是一个二进制字符串)。输入的字符串都是非空的,并且只包含1或0。示例:Example 1:Input: a = "11", b = "1"Output: "100"Example 2:Input: a = "1010", b = "1011"Output: "10101"思路按照手算加法的步骤,从最低位开始,同位相加,并考虑是否原创 2018-12-28 12:22:17 · 1226 阅读 · 0 评论 -
Leetcode算法——60、排列序列(permutation sequence)
集合 [1,2,3,…,n] 共有 n! 个唯一的排列。将所有排列方法按照升序排序,可以得到一个序列。比如 n=3 时的序列为:“123”“132”“213”“231”“312”“321”要求给定 n 和 k,返回序列中第 k 个排列。备注:n 的范围为 1~9k 的范围为 1~9!示例:Example 1:Input: n = 3, k = 3Output: "2...原创 2018-12-17 19:56:25 · 1028 阅读 · 0 评论 -
Leetcode算法——56、合并区间(merge intervals)
给定一个区间的数组,将所有重叠的区间进行合并。示例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]]思路先按照每个区间的起点排序,然后从小到大扫描。每次扫描,查看与前一个是否...原创 2018-12-11 13:06:44 · 4304 阅读 · 2 评论 -
Leetcode算法——66、加1(plus one)
给定一个非空数字序列,表示一个非负整数。要求将这个整数加1。序列中每个元素都是一个单独的数字,且最高位是数组的第一个元素。最高位不是0,除非就是整个序列就只有一个0。思路按照手写加法的定义,从最低位开始加1,并计算每一位是否满10需要进1。python实现def plusOne(digits): """ :type digits: List[int] :rty...原创 2018-12-27 20:35:37 · 522 阅读 · 0 评论 -
Leetcode算法——63、不重复路径II(unique paths II)
一个机器人位于一个m*n的网格的左上角。它每次只能向下或向右移动一格。它试图到达网格的右下角。网格中有一些障碍物,机器人不能通过。求有多少种不重复的路径?备注:1、m 和 n 都不大于 100.2、障碍物和空地分别被标为 1 和 0。示例:Input:[ [0,0,0], [0,1,0], [0,0,0]]Output: 2Explanation:There ...原创 2018-12-21 12:54:07 · 1439 阅读 · 0 评论 -
Leetcode算法——54、螺旋矩阵(spiral matrix)
给定一个矩阵 m*n,返回所有元素的螺旋排列顺序(从左上角开始,顺时针旋转,由外向内)。示例1:Input:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]Output: [1,2,3,6,9,8,7,4,5]示例2:Input:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]]Output...原创 2018-12-10 12:49:50 · 1293 阅读 · 0 评论 -
RNN 与 LSTM 的原理详解
本文主要讲解了 RNN 和 LSTM 的结构、前馈、反馈的原理,参考了https://www.jianshu.com/p/f3bde26febed/与https://blog.csdn.net/zhaojc1995/article/details/80572098等文章,并纠正了一些公式的错误。RNN(Recurrent Neural Network)是一类用于处理序列数据的神经网络。什么...原创 2018-11-10 10:54:26 · 20490 阅读 · 3 评论 -
Leetcode算法——35、查询可插入位置
给定一个升序数组和一个目标值,返回目标值的索引。如果不存在,返回目标值按照顺序应该插入到的位置。假设数组中没有重复元素。示例:Example 1:Input: [1,3,5,6], 5Output: 2Example 2:Input: [1,3,5,6], 2Output: 1Example 3:Input: [1,3,5,6], 7Output: 4Example 4:...原创 2018-11-07 12:33:27 · 250 阅读 · 0 评论 -
Leetcode算法——21、合并两个有序链表
题目合并两个有序链表,返回一个新链表。即合并排序。示例:Input: 1-&gt;2-&gt;4, 1-&gt;3-&gt;4Output: 1-&gt;1-&gt;2-&gt;3-&gt;4-&gt;4思路定义两个指针,分别指向两个链表的head。定义一个空的新链表。然后依次取出指针值,比较大小,将较小值追加到新链表,同时将较小值所在链原创 2018-10-18 12:35:14 · 395 阅读 · 0 评论