05 2020 档案
Leetcode练习(Python):第299题:猜数字游戏:你正在和你的朋友玩 猜数字(Bulls and Cows)游戏:你写下一个数字让你的朋友猜。每次他猜测后,你给他一个提示,告诉他有多少位数字和确切位置都猜对了(称为“Bulls”, 公牛),有多少位数字猜对了但是位置不对(称为“Cows”, 奶牛)。你的朋友将会根据提示继续猜,直到猜出秘密数字。
摘要:题目: 猜数字游戏:你正在和你的朋友玩 猜数字(Bulls and Cows)游戏:你写下一个数字让你的朋友猜。每次他猜测后,你给他一个提示,告诉他有多少位数字和确切位置都猜对了(称为“Bulls”, 公牛),有多少位数字猜对了但是位置不对(称为“Cows”, 奶牛)。你的朋友将会根据提示继续猜,直 阅读全文
posted @ 2020-05-31 22:13 桌子哥 阅读(521) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第292题:Nim 游戏:你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。
摘要:题目: Nim 游戏:你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。 示例: 输入: 4输出: fals 阅读全文
posted @ 2020-05-31 20:26 桌子哥 阅读(3453) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第290题:单词规律:给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。
摘要:题目: 单词规律:给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。 示例1: 输入: pattern = "abba", str = 阅读全文
posted @ 2020-05-31 17:39 桌子哥 阅读(512) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第278题:第一个错误的版本:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。
摘要:题目: 第一个错误的版本:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。 阅读全文
posted @ 2020-05-31 17:14 桌子哥 阅读(507) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第448题:找到所有数组中消失的数字:给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。
摘要:题目: 找到所有数组中消失的数字:给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所 阅读全文
posted @ 2020-05-30 11:06 桌子哥 阅读(1006) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第415题:字符串相加:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
摘要:题目: 字符串相加:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 注意: num1 和num2 的长度都小于 5100.num1 和num2 都只包含数字 0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符 阅读全文
posted @ 2020-05-30 10:32 桌子哥 阅读(1003) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第441题:排列硬币:你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。 给定一个数字 n,找出可形成完整阶梯行的总行数。 n 是一个非负整数,并且在32位有符号整型的范围内。
摘要:题目: 排列硬币:你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。 给定一个数字 n,找出可形成完整阶梯行的总行数。 n 是一个非负整数,并且在32位有符号整型的范围内。 示例 1: n = 5 硬币可排列成以下几行:¤¤ ¤¤ ¤ 因为第三行不完整,所以返回 阅读全文
posted @ 2020-05-30 10:20 桌子哥 阅读(822) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第434题:字符串中的单词数:统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。 请注意,你可以假定字符串里不包括任何不可打印的字符。
摘要:题目: 字符串中的单词数:统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。 请注意,你可以假定字符串里不包括任何不可打印的字符。 示例: 输入: "Hello, my name is John"输出: 5解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单 阅读全文
posted @ 2020-05-30 10:03 桌子哥 阅读(707) 评论(0) 推荐(0) 编辑
Leetcode练习(python):第414题:第三大的数:给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。
摘要:题目: 第三大的数:给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1.示例 2: 输入: [1, 2] 输出: 2 解释: 第三大的数不存在, 所以返回最大的数 阅读全文
posted @ 2020-05-28 19:12 桌子哥 阅读(989) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第389题:找不同:给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。
摘要:题目: 找不同:给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 示例: 输入: s = "abcd" t = "abcde" 输出: e 解释: 'e' 是那个被添加的字母。 思路: 思路较简单。 程 阅读全文
posted @ 2020-05-28 19:03 桌子哥 阅读(1838) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第374题:猜数字大小:我们正在玩一个猜数字游戏。 游戏规则如下: 我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。 每次你猜错了,我会告诉你这个数字是大了还是小了。
摘要:题目: 猜数字大小:我们正在玩一个猜数字游戏。 游戏规则如下: 我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。 每次你猜错了,我会告诉你这个数字是大了还是小了。 你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0): -1 : 我的数 阅读全文
posted @ 2020-05-28 18:51 桌子哥 阅读(916) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第367题:有效的完全平方数:给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。 说明:不要使用任何内置的库函数,如  sqrt。
摘要:题目: 有效的完全平方数:给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。 说明:不要使用任何内置的库函数,如 sqrt。 示例 1: 输入:16 输出:True 示例 2: 输入:14 输出:False 思路: 暴力法会超时,使用二分查 阅读全文
posted @ 2020-05-28 18:39 桌子哥 阅读(622) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第350题:两个数组的交集 II:给定两个数组,编写一个函数来计算它们的交集。
摘要:题目: 两个数组的交集 II:给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2: 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明: 输出 阅读全文
posted @ 2020-05-28 18:30 桌子哥 阅读(413) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第345题:反转字符串中的元音字母:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
摘要:题目: 反转字符串中的元音字母:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 示例 1: 输入: "hello"输出: "holle"示例 2: 输入: "leetcode"输出: "leotcede"说明:元音字母不包含字母"y"。 思路: 双指针,注意元音的大小写都要有。 程序: 阅读全文
posted @ 2020-05-28 12:21 桌子哥 阅读(590) 评论(0) 推荐(0) 编辑
Leetcode练习:第344题:反转字符串: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
摘要:题目: 反转字符串: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1: 输入: 阅读全文
posted @ 2020-05-28 10:55 桌子哥 阅读(1387) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第342题:4的幂:给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。
摘要:题目: 4的幂:给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。 示例 1: 输入: 16 输出: true 示例 2: 输入: 5 输出: false 进阶:你能不使用循环或者递归来完成本题吗? 思路: 思路较简单。 程序: class Solution: def 阅读全文
posted @ 2020-05-27 20:49 桌子哥 阅读(570) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第326题:3的幂:给定一个整数,写一个函数来判断它是否是 3 的幂次方。
摘要:题目: 3的幂:给定一个整数,写一个函数来判断它是否是 3 的幂次方。 示例 1: 输入: 27输出: true示例 2: 输入: 0输出: false示例 3: 输入: 9输出: true示例 4: 输入: 45输出: false进阶:你能不使用循环或者递归来完成本题吗? 思路: 思路较简单。 程 阅读全文
posted @ 2020-05-27 20:46 桌子哥 阅读(1087) 评论(0) 推荐(0) 编辑
Python爬虫学习:用API爬取天气预报数据
摘要:和风天气会提供一个API接口,方便其他的开发人员或者是学生,之前做手机APP的时候就使用过,现在回头看数据爬虫的东西,发现之前的接口已经不能用了,好可惜啊。 虽然不能连接,但是展示下思路吧。 1.首先获取所有城市的ID 在https://dev.heweather.com/docs/refer/ci 阅读全文
posted @ 2020-05-27 20:24 桌子哥 阅读(3799) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第349题:两个数组的交集:给定两个数组,编写一个函数来计算它们的交集。
摘要:题目: 两个数组的交集:给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2: 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明: 输出结果中的每 阅读全文
posted @ 2020-05-27 13:18 桌子哥 阅读(1358) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第263题:丑数:编写一个程序判断给定的数是否为丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。
摘要:题目: 丑数:编写一个程序判断给定的数是否为丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。 示例 1: 输入: 6输出: true解释: 6 = 2 × 3示例 2: 输入: 8输出: true解释: 8 = 2 × 2 × 2示例 3: 输入: 14输出: false 解释: 14 不是 阅读全文
posted @ 2020-05-27 13:10 桌子哥 阅读(1672) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第283题:移动零:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
摘要:题目: 移动零:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 思路: 思路较简单。 程序: class 阅读全文
posted @ 2020-05-27 13:03 桌子哥 阅读(1426) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第268题:缺失数字:给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。
摘要:题目: 缺失数字:给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。 示例 1: 输入: [3,0,1]输出: 2示例 2: 输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常 阅读全文
posted @ 2020-05-27 10:47 桌子哥 阅读(807) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第258题:各位相加:给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。
摘要:题目: 各位相加:给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 示例: 输入: 38输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。进阶:你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题 阅读全文
posted @ 2020-05-27 10:22 桌子哥 阅读(1217) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):第257题:二叉树的所有路径:给定一个二叉树,返回所有从根节点到叶子节点的路径。
摘要:题目: 二叉树的所有路径:给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。 示例: 输入: 1 / \2 3 \ 5 输出: ["1->2->5", "1->3"] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 思路: 思路较简单。 程序 阅读全文
posted @ 2020-05-27 10:09 桌子哥 阅读(1251) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):广度优先搜索类:第127题:单词接龙:给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则: 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。
摘要:题目: 单词接龙:给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则: 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。 说明: 如果不存在这样的转换序列,返回 0。所有单词具 阅读全文
posted @ 2020-05-27 09:54 桌子哥 阅读(1197) 评论(0) 推荐(0) 编辑
深度优先与广度优先的概念
摘要:深度优先搜索(DFS)和广度优先搜索(BFS) 深度优先搜索和广度优先搜索,都是图形搜索算法,它两相似,又却不同,在应用上也被用到不同的地方。这里拿一起讨论,方便比较。 一、深度优先搜索 深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法,英文缩写为DFS即Depth First Search 阅读全文
posted @ 2020-05-27 08:53 桌子哥 阅读(4484) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):滑动窗口:第239题:滑动窗口最大值:给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。
摘要:题目: 滑动窗口最大值:给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 进阶: 你能在线性时间复杂度内解决此题吗? 示例: 输入: nums = [1,3,-1,-3 阅读全文
posted @ 2020-05-26 17:45 桌子哥 阅读(1570) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):深度优先搜索类:第130题:被围绕的区域:给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。
摘要:题目: 被围绕的区域:给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。 示例: X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为: X X X XX X X XX X X XX 阅读全文
posted @ 2020-05-26 16:03 桌子哥 阅读(845) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):深度优先搜索类:第200题:岛屿数量:给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。
摘要:题目: 岛屿数量:给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入:11110110101100000000输出: 1示例 阅读全文
posted @ 2020-05-26 10:34 桌子哥 阅读(1705) 评论(0) 推荐(0) 编辑
Python爬虫学习:简单的爬虫
摘要:1.使用GET方式抓取数据,GET方法用于获取或者查询资源信息 #导入requests包 import requests #网址 url = 'http://www.cntour.cn/' #GET方式,获取网页数据 strhtml = requests.get(url) #strhtml是一个ur 阅读全文
posted @ 2020-05-25 23:54 桌子哥 阅读(364) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第117题:填充每个节点的下一个右侧节点指针 II:给定一个二叉树 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。 初始状态下,所有 next 指针都被设置为 NULL。
摘要:题目: 填充每个节点的下一个右侧节点指针 II:给定一个二叉树 struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置 阅读全文
posted @ 2020-05-25 17:24 桌子哥 阅读(326) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第116题:填充每个节点的下一个右侧节点指针:给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。
摘要:题目: 填充每个节点的下一个右侧节点指针:给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *right; 阅读全文
posted @ 2020-05-25 14:06 桌子哥 阅读(405) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第114题:二叉树展开为链表:给定一个二叉树,原地将它展开为一个单链表。
摘要:题目: 二叉树展开为链表:给定一个二叉树,原地将它展开为一个单链表。 例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 思路: 先使用前序遍历,再按顺序构建一个没有左子树的树。 程序: # Definition for a binar 阅读全文
posted @ 2020-05-25 09:12 桌子哥 阅读(265) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第113题: 路径总和 II:给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。
摘要:题目: 路径总和 II:给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回: [ [5, 阅读全文
posted @ 2020-05-24 19:57 桌子哥 阅读(634) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:求根到叶子节点数字之和:给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。 例如,从根到叶子节点路径 1->2->3 代表数字 123。 计算从根到叶子节点生成的所有数字之和。 说明: 叶子节点是指没有子节点的节点。
摘要:题目: 求根到叶子节点数字之和:给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。 例如,从根到叶子节点路径 1->2->3 代表数字 123。 计算从根到叶子节点生成的所有数字之和。 说明: 叶子节点是指没有子节点的节点。 思路: 深度优先。 程序: 阅读全文
posted @ 2020-05-24 17:00 桌子哥 阅读(529) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第199题:二叉树的右视图:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
摘要:题目: 二叉树的右视图:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 思路: 借助层序遍历来实现。 程序: # Definition for a binary tree node. # class TreeNode: # def __init__(sel 阅读全文
posted @ 2020-05-24 16:40 桌子哥 阅读(760) 评论(0) 推荐(0) 编辑
大数据可视化案例二:数据可视化地图
摘要:Echart: ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的 Canvas 类库 ZRender,提供直观,生动,可交互,可高度个性化定制 阅读全文
posted @ 2020-05-22 12:51 桌子哥 阅读(3636) 评论(0) 推荐(0) 编辑
大数据可视化案例一:词云
摘要:词云: “词云”这个概念由美国西北大学新闻学副教授、新媒体专业主任里奇·戈登(Rich Gordon)于近日提出。戈登做过编辑、记者,曾担任迈阿密先驱报(Miami Herald)新媒体版的主任。他一直很关注网络内容发布的最新形式——即那些只有互联网可以采用而报纸、广播、电视等其它媒体都望尘莫及的传 阅读全文
posted @ 2020-05-21 20:00 桌子哥 阅读(2418) 评论(0) 推荐(0) 编辑
大数据获取案例:Python网络爬虫实例
摘要:网络爬虫: 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 以上是网络爬虫的百度,下面开始介绍使用Python进行网络爬虫来获取数据。 本次内容 阅读全文
posted @ 2020-05-21 10:54 桌子哥 阅读(7598) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第236题:二叉树的最近公共祖先:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
摘要:题目: 二叉树的最近公共祖先:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: 阅读全文
posted @ 2020-05-20 17:13 桌子哥 阅读(285) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第235题:二叉搜索树的最近公共祖先:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
摘要:题目: 二叉搜索树的最近公共祖先:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下 阅读全文
posted @ 2020-05-20 15:31 桌子哥 阅读(273) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第111题:二叉树的最小深度:给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
摘要:题目: 二叉树的最小深度:给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 思路: 递归求解,但要注意的是测试样例[1,2],因为1不能作为叶子节点所以结果是2,设计程序的时候要规避。 程序: # Definition 阅读全文
posted @ 2020-05-20 11:04 桌子哥 阅读(511) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第110题:平衡二叉树:给定一个二叉树,判断它是否是高度平衡的二叉树。
摘要:题目: 平衡二叉树:给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 思路: 递归思路。 程序: # Definition for a binary tree node. # class TreeNode 阅读全文
posted @ 2020-05-20 10:11 桌子哥 阅读(453) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第112题:路径总和:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。
摘要:题目: 路径总和:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 t 阅读全文
posted @ 2020-05-19 12:42 桌子哥 阅读(837) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第226题:翻转二叉树:翻转一棵二叉树。
摘要:题目: 翻转二叉树:翻转一棵二叉树。 示例: 输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发的 : 谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法 阅读全文
posted @ 2020-05-19 10:32 桌子哥 阅读(216) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第108题:将有序数组转换为二叉搜索树:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。
摘要:题目: 将有序数组转换为二叉搜索树:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 思路: 因为输入是递增的数组,为了转换成二叉搜索树,因此需要找到整个树的根节点,之后使用递归来的得到每个子树 阅读全文
posted @ 2020-05-19 10:21 桌子哥 阅读(327) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第104题:二叉树的最大深度:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。
摘要:题目: 二叉树的最大深度:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 思路: 借助层序遍历来做,有多少层树就有多深。 程序: # Definition for a binary tree node. # clas 阅读全文
posted @ 2020-05-19 10:07 桌子哥 阅读(628) 评论(0) 推荐(0) 编辑
Leetcode练习(python):树类:第107题:二叉树的层次遍历 II:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
摘要:题目: 二叉树的层次遍历 II:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 思路: 正常层序遍历结果的逆输出。 程序: # Definition for a binary tree node. # class TreeNode: # 阅读全文
posted @ 2020-05-19 09:57 桌子哥 阅读(531) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第102题:二叉树的层序遍历:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
摘要:题目: 二叉树的层序遍历:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 思路: 层序遍历的常用解题思路。 程序: # Definition for a binary tree node. # class TreeNode: # def __init__ 阅读全文
posted @ 2020-05-19 09:35 桌子哥 阅读(1085) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第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 思路: 递归大法 阅读全文
posted @ 2020-05-19 09:23 桌子哥 阅读(649) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第100题:相同的树:给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
摘要:题目: 相同的树:给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 思路: 递归秒解,思路也简单。 程序: # Definition for a binary tree node. # class TreeNode: # def _ 阅读全文
posted @ 2020-05-18 20:03 桌子哥 阅读(464) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):树类:第98题:验证二叉搜索树:给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。
摘要:题目: 验证二叉搜索树:给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 思路: 遇到树第一想到了递归,用递归来实现。 程序 : # Defin 阅读全文
posted @ 2020-05-18 19:56 桌子哥 阅读(656) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):位运算类:第201题:数字范围按位与:给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。
摘要:题目: 数字范围按位与:给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。 思路: 因为是连续递增的数,可以通过移位来实现。 程序1:暴力大法,自然超时。 class Solution: def rangeBit 阅读全文
posted @ 2020-05-18 17:35 桌子哥 阅读(670) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):位运算类:第137题:只出现一次的数字 II:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。
摘要:题目: 只出现一次的数字 II:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 思路: 第一感觉是使用哈希表,但是不允许使用额外空间,位运算可以没有想到,先用这种方法实 阅读全文
posted @ 2020-05-18 17:23 桌子哥 阅读(630) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):位运算类:第190题:颠倒二进制位:颠倒给定的 32 位无符号整数的二进制位。
摘要:题目: 颠倒二进制位:颠倒给定的 32 位无符号整数的二进制位。 思路: 思路较简单。 程序: class Solution: def reverseBits(self, n: int) -> int: if not n: return 0 result = 0 for index in range 阅读全文
posted @ 2020-05-18 16:43 桌子哥 阅读(693) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):位运算类:第191题:位1的个数:编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。
摘要:题目: 位1的个数:编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 思路: 本题思路简单。 程序: class Solution: def hammingWeight(self, n: int) -> int: if not n: retur 阅读全文
posted @ 2020-05-18 11:06 桌子哥 阅读(692) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):排序类:第220题:存在重复元素 III:给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得&#160;nums [i] 和&#160;nums [j]&#160;的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。
摘要:题目: 存在重复元素 III:给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。 思路: 常规的查找方法一直超时,意识到不能那样做,看来讲解,使用桶排序,桶排序也是第一次用 阅读全文
posted @ 2020-05-18 10:46 桌子哥 阅读(599) 评论(0) 推荐(0) 编辑
前台、中台与后台的概念
摘要:前台: 这里所说的“前台”和“前端”并不是一回事。所谓前台即包括各种和用户直接交互的界面,比如web页面,手机app;也包括服务端各种实时响应用户请求的业务逻辑,比如商品查询、订单系统等等。 后台: 后台并不直接面向用户,而是面向运营人员的配置管理系统,比如商品管理、物流管理、结算管理。后台为前台提 阅读全文
posted @ 2020-05-18 09:50 桌子哥 阅读(24428) 评论(0) 推荐(3) 编辑
Leetcode练习(Python):排序类:第179题:最大数:给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。
摘要:题目: 最大数:给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。 思路: 根据字符串的特征使用类似冒泡排序的方式来将数组从大到小排序,最后构造结果就好。 程序: class Solution: def largestNumber(self, nums: List[int]) -> str 阅读全文
posted @ 2020-05-16 21:54 桌子哥 阅读(1869) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):贪心算法类:第134题:加油站:在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。
摘要:题目: 加油站:在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则 阅读全文
posted @ 2020-05-16 17:47 桌子哥 阅读(1088) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):堆类:第264题:丑数 II:编写一个程序,找出第 n 个丑数。 丑数就是质因数只包含 2, 3, 5 的正整数。
摘要:题目: 丑数 II:编写一个程序,找出第 n 个丑数。 丑数就是质因数只包含 2, 3, 5 的正整数。 思路: 使用最小堆来实现,借助哈希表保证了结果的唯一性。 程序: import heapq class Solution: def nthUglyNumber(self, n: int) -> 阅读全文
posted @ 2020-05-16 11:09 桌子哥 阅读(587) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):栈类:第173题:二叉搜索树迭代器:实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。
摘要:题目: 二叉搜索树迭代器:实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 思路: 二叉搜索树使用中序,然后弹出栈底。 程序: # Definition for a binary tree node. # class Tre 阅读全文
posted @ 2020-05-16 10:15 桌子哥 阅读(244) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):栈类:第103题:二叉树的锯齿形层次遍历:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
摘要:题目: 二叉树的锯齿形层次遍历:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 思路: 使用层序遍历的思路,但是没有用到栈。 程序: # Definition for a binary tree node. # class T 阅读全文
posted @ 2020-05-16 09:50 桌子哥 阅读(337) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):栈类:第150题:逆波兰表达式求值:根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
摘要:题目: 逆波兰表达式求值:根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 思路: 使用辅助栈来 阅读全文
posted @ 2020-05-15 21:24 桌子哥 阅读(440) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):栈类:第145题:二叉树的后序遍历:给定一个二叉树,返回它的 后序 遍历。
摘要:题目: 二叉树的后序遍历:给定一个二叉树,返回它的 后序 遍历。 思路: 递归大法好,之后补充使用栈来实现的。 程序1:递归实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # sel 阅读全文
posted @ 2020-05-15 19:05 桌子哥 阅读(209) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):栈类:第144题:二叉树的前序遍历:给定一个二叉树,返回它的 前序 遍历。
摘要:题目: 二叉树的前序遍历:给定一个二叉树,返回它的 前序 遍历。 思路: 思路一使用老套路递归,思路二会补充使用栈的程序。 程序1:递归 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # 阅读全文
posted @ 2020-05-15 17:09 桌子哥 阅读(222) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):栈类:第225题:用队列实现栈:使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空
摘要:题目: 用队列实现栈:使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 。 注意: 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from fr 阅读全文
posted @ 2020-05-15 16:37 桌子哥 阅读(508) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):栈类:用栈实现队列:使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。
摘要:题目: 用栈实现队列:使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。 思路: 使用辅助栈。 程序: class MyQueue: def __in 阅读全文
posted @ 2020-05-15 10:40 桌子哥 阅读(465) 评论(0) 推荐(0) 编辑
联邦学习:联邦学习基本概念
摘要:早在21世纪初期,在自动化领域就在面临一个问题就是“信息孤岛”,也就是在过程控制过程中,不同的控制环节采用了不同的自动控制系统并且采用和设计了自己专有的控制网络技术,这导致难以实现不同厂家控制设备的开放的系统集成,系统具有较强的封闭性和“信息孤岛”现象,系统内大量有用信息难以有效获取并实现开放共享。 阅读全文
posted @ 2020-05-15 09:48 桌子哥 阅读(6678) 评论(0) 推荐(1) 编辑
Leetcode练习(Python):栈类:第155题:最小栈:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop()&#160;—— 删除栈顶的元素。 top()&#160;—— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。
摘要:题目: 最小栈:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 思路: 利用辅助栈来实现,辅助栈用 阅读全文
posted @ 2020-05-14 22:34 桌子哥 阅读(768) 评论(0) 推荐(1) 编辑
机器学习案例三:数据降维与相关性分析(皮尔逊(Pearson),二维相关性分析(TDC),灰色关联分析,最大信息系数(MIC))
摘要:在使用机器学习模型对数据进行训练的时候,需要考虑数据量和数据维度,在很多情况下并不是需要大量的数据和大量的数据维度,这样会造成机器学习模型运行慢,且消耗硬件设备。除此之外,在数据维度较大的情况下,还存在”维度灾难“的问题。在本篇博客里不对数据质量的判定,以及数据的增删做详细的介绍,只介绍对于数据的降 阅读全文
posted @ 2020-05-14 21:48 桌子哥 阅读(12384) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):动态规划类:第221题:最大正方形:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。
摘要:题目: 最大正方形:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 思路: 思路来源于官方,自己的思路把题做的太难了,也做不对,直接借助一个矩阵来存放最大的面积,设计程序需要一定的小技巧。 程序: class Solution: def maximalSquar 阅读全文
posted @ 2020-05-13 21:56 桌子哥 阅读(1432) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):动态规划类:第139题:单词拆分:给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。
摘要:题目: 单词拆分:给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 思路: 动态规划常用思路。 程序: class Solution: de 阅读全文
posted @ 2020-05-13 20:43 桌子哥 阅读(703) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):动态规划类:第95题:不同的二叉搜索树 II:给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。
摘要:题目: 不同的二叉搜索树 II:给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。 思路: 遍历每一个节点,并且得到每个节点的左右子树,然后获得每个子树的样子就可以得出来了。 自己想了半天没法实现,参考了一下网上大神的程序,写的很好,很好理解。 程序: # Definition 阅读全文
posted @ 2020-05-13 18:56 桌子哥 阅读(300) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):动态规划类:第96题:不同的二叉搜索树:给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?
摘要:题目: 不同的二叉搜索树:给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 思路: 找规律,使用动态规划模板。 程序: class Solution: def numTrees(self, n: int) -> int: if n <= 0: return 0 auxilia 阅读全文
posted @ 2020-05-13 17:17 桌子哥 阅读(389) 评论(0) 推荐(0) 编辑
机器学习案例二:缺失时间序列数据填补与ESN(回声状态网络)
摘要:时间序列数据是一种与时间因素有关系的连续的数据,通常使用传感器等来获取,具有极高的应用价值,可以实时记录被监测设备或人的状态,同时可以用于预测建模,得到对某事件未来发展的一个期望。 在使用传感器进行数据采集的过程中,在没有备用传感器的情况下,会由于种种原因出现采集到的数据在某个时间段内数据缺失的现象 阅读全文
posted @ 2020-05-12 18:13 桌子哥 阅读(1592) 评论(2) 推荐(0) 编辑
Leetcode练习(Python):动态规划类:第213题:打家劫舍 II:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
摘要:题目: 打家劫舍 II:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数 阅读全文
posted @ 2020-05-12 16:47 桌子哥 阅读(1010) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):动态规划类:第198题:打家劫舍:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。
摘要:题目: 打家劫舍:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额 阅读全文
posted @ 2020-05-12 15:08 桌子哥 阅读(544) 评论(0) 推荐(1) 编辑
Leetcode练习(Python):动态规划类:第70题:爬楼梯:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。
摘要:题目: 爬楼梯:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 思路: 斐波那契数列 程序: import functools class Solution: @functools.lru_cac 阅读全文
posted @ 2020-05-12 14:45 桌子哥 阅读(1349) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):分治算法类:第241题:为运算表达式设计优先级:给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。
摘要:题目: 为运算表达式设计优先级:给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。 思路: 分治算法的核心思想是能将一个复杂的题目拆分为若干简单的小题目,并且通过递归的方式来实现。 在本题中 阅读全文
posted @ 2020-05-12 14:32 桌子哥 阅读(915) 评论(0) 推荐(0) 编辑
Leetcode练习(python):分治算法类:第215题:数组中的第K个最大元素:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
摘要:题目: 数组中的第K个最大元素:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 思路: 是这样做吗? 。。。 程序: class Solution: def findKthLargest(self, nums: List[ 阅读全文
posted @ 2020-05-12 13:23 桌子哥 阅读(946) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):二分查找类:第230题:二叉搜索树中第K小的元素:给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。
摘要:题目: 二叉搜索树中第K小的元素:给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 思路: 二叉搜索树具有良好的性质,一个节点左边的数小于该节点,右边的数大于该节点,因此想到了使用中序 阅读全文
posted @ 2020-05-12 13:04 桌子哥 阅读(322) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):二分查找类:第222题:完全二叉树的节点个数:说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。
摘要:题目: 完全二叉树的节点个数:说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。 思路: 一看到二叉树,想到了递归,使用暴力法遍历所有节点。 暂 阅读全文
posted @ 2020-05-12 11:33 桌子哥 阅读(247) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):二分查找类:第240题:搜索二维矩阵 II:编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。
摘要:题目: 搜索二维矩阵 II:编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 思路: 二分查找常规思路。 程序: class Solution: def searchMatrix( 阅读全文
posted @ 2020-05-12 10:56 桌子哥 阅读(944) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):回溯算法类:第211题:添加与搜索单词 - 数据结构设计:设计一个支持以下两种操作的数据结构: void addWord(word) bool search(word) search(word) 可以搜索文字或正则表达式字符串,字符串只包含字母 . 或 a-z 。 . 可以表示任何一个字母。
摘要:题目: 添加与搜索单词 - 数据结构设计:设计一个支持以下两种操作的数据结构: void addWord(word) bool search(word) search(word) 可以搜索文字或正则表达式字符串,字符串只包含字母 . 或 a-z 。 . 可以表示任何一个字母。 思路: 尝试了很长时间 阅读全文
posted @ 2020-05-11 20:06 桌子哥 阅读(575) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):回溯算法类:第131题:分割回文串:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。
摘要:题目: 分割回文串:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 思路: 使用回溯算法的模板。 程序: class Solution: def partition(self, s: str) -> List[List[str]]: if not  阅读全文
posted @ 2020-05-11 18:52 桌子哥 阅读(2279) 评论(0) 推荐(0) 编辑
机器学习案例一:小样本数据建模与灰色系统理论
摘要:现在在机器学习领域的主流思维都是使用大量或海量的数据来训练一个模型从而得到很好的分类或回归结果。但是,在某些科学或应用场合,由于数据采集的不变性,导致在很长的时间内只获取了极少数量的数据,或者是在本来是具有海量数据的环境下,由于数据的质量不佳、冗余以及数据的不可靠,导致海量的数据只有极少数的数据样本 阅读全文
posted @ 2020-05-10 23:44 桌子哥 阅读(3662) 评论(14) 推荐(0) 编辑
Leetcode练习(Python):回溯算法类:第89题:格雷编码:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。 格雷编码序列必须以 0 开头。
摘要:题目: 格雷编码:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。 格雷编码序列必须以 0 开头。 思路: 想了一下午回溯的思路没有成功,之后想到补上。 格雷码想到了当 阅读全文
posted @ 2020-05-09 21:01 桌子哥 阅读(361) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):回溯算法类:第77题:组合:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。
摘要:题目: 组合:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 思路: 回溯算法的框架。 程序: class Solution: def combine(self, n: int, k: int) -> List[List[int]]: def backtrack(in 阅读全文
posted @ 2020-05-09 16:57 桌子哥 阅读(1187) 评论(0) 推荐(0) 编辑
Leetcode练习(python):回溯算法类:第60题:第k个排列:给出集合&#160;[1,2,3,…,n],其所有元素共有&#160;n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当&#160;n = 3 时, 所有排列如下: "123" "132" "213" "231" "312" "321" 给定&#160;n 和&#1
摘要:题目: 第k个排列:给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "132" "213" "231" "312" "321" 给定 n 和 k,返回第 k 个排列。 思路: 回溯方法会超时, 阅读全文
posted @ 2020-05-09 16:22 桌子哥 阅读(552) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):回溯算法类:第47题:全排列 II:给定一个可包含重复数字的序列,返回所有不重复的全排列。
摘要:题目: 全排列 II:给定一个可包含重复数字的序列,返回所有不重复的全排列。 思路: 在第46题的基础上,增加了判断是否是重复的判断,借助findOut来判断新的数是否重复的使用。 程序: class Solution: def permuteUnique(self, nums: List[int] 阅读全文
posted @ 2020-05-09 11:56 桌子哥 阅读(1014) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):回溯算法类:第46题:全排列:给定一个 没有重复 数字的序列,返回其所有可能的全排列。
摘要:题目: 全排列:给定一个 没有重复 数字的序列,返回其所有可能的全排列。 思路: 使用回溯算法的模板。 程序: class Solution: def permute(self, nums: List[int]) -> List[List[int]]: result = [] auxiliary = 阅读全文
posted @ 2020-05-09 10:54 桌子哥 阅读(1633) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):回溯算法类:第22题:括号生成:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
摘要:题目: 括号生成:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 思路: 使用回溯算法,使用回溯算法的模板可以很快的求解。 程序: class Solution: def generateParenthesis(self, n: int) -> Lis 阅读全文
posted @ 2020-05-09 10:33 桌子哥 阅读(1544) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):字符串类:第227题:基本计算器 II:实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。
摘要:题目: 基本计算器 II:实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。 说明: 你可以假设所给定的表达式都是有效的。 请不要使用内置的库函数 eval。 思路: 使用栈来实现,之前在做课设时候做 阅读全文
posted @ 2020-05-08 16:42 桌子哥 阅读(1466) 评论(0) 推荐(0) 编辑
Leetcode练习(python):字符串类:第165题:比较版本号:比较两个版本号 version1&#160;和 version2。 如果&#160;version1&#160;>&#160;version2&#160;返回&#160;1,如果&#160;version1&#160;<&#160;version2 返回 -1, 除此之外返回 0。
摘要:题目: 比较版本号:比较两个版本号 version1 和 version2。 如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。 你可以假设版本字符串非空,并且只包含数字和 . 字符。 . 字符不代表小数点,而是用于 阅读全文
posted @ 2020-05-08 16:11 桌子哥 阅读(902) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):字符串类:第43题:字符串相乘:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
摘要:题目: 字符串相乘:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 说明: num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零开头,除非是数字 0 本 阅读全文
posted @ 2020-05-08 13:37 桌子哥 阅读(1094) 评论(0) 推荐(0) 编辑
Leetcode练习(python):字符串类:第93题:复原IP地址:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔。
摘要:题目: 复原IP地址:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔。 思路: 思路较简单。 程序: class Solution: def restoreIpAddresse 阅读全文
posted @ 2020-05-08 11:11 桌子哥 阅读(1752) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):字符串类:第6题:Z 字形变换:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
摘要:题目: Z 字形变换:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如 阅读全文
posted @ 2020-05-08 10:15 桌子哥 阅读(555) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):字符串类:第71题:简化路径:以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。
摘要:题目: 简化路径: 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux 阅读全文
posted @ 2020-05-07 18:08 桌子哥 阅读(997) 评论(0) 推荐(0) 编辑
Leetcode练习(python):字符串类:第91题:解码方法:一条包含字母&#160;A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数。
摘要:题目: 解码方法:一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数。 思路: 一开始理解错题目了,使用字典去对应,发现题目要求不是这样的。 之后使用动态规划来做,需要考虑的情况比 阅读全文
posted @ 2020-05-07 17:47 桌子哥 阅读(1338) 评论(0) 推荐(0) 编辑
Leetcode练习(python):字符串类:第151题:翻转字符串里的单词:给定一个字符串,逐个翻转字符串中的每个单词。
摘要:题目: 翻转字符串里的单词:给定一个字符串,逐个翻转字符串中的每个单词。 说明: 无空格字符构成一个单词。输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 思路: 思路较简单。 程序: class Solution 阅读全文
posted @ 2020-05-07 15:47 桌子哥 阅读(323) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):字符串类:第17题:电话号码的字母组合:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
摘要:题目: 电话号码的字母组合:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 思路: 思路较简单,但是使用太多for循环嵌套会提示出现超出内存限制,查找资料改善了一下。 程序: class Solution: 阅读全文
posted @ 2020-05-07 14:21 桌子哥 阅读(1650) 评论(2) 推荐(0) 编辑
Leetcode练习(Python):字符串类:第5题:最长回文子串:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
摘要:题目: 最长回文子串:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 思路: 思路较简单,需要考虑回文是奇数还是偶数的情况,但是小坑多,得一一调。 程序: class Solution: def longestPalindrome(self, s: str) 阅读全文
posted @ 2020-05-07 13:35 桌子哥 阅读(922) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):字符串类:第38题:外观数列:「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。
摘要:题目: 外观数列:「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 前五项如下: 1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被 阅读全文
posted @ 2020-05-07 10:57 桌子哥 阅读(379) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):字符串类:第58题:最后一个单词的长度:给定一个仅包含大小写字母和空格&#160;' '&#160;的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。 如果不存在最后一个单词,请返回 0&#160;。 说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。
摘要:题目: 最后一个单词的长度:给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。 如果不存在最后一个单词,请返回 0 。 说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。 思路: 思路较简 阅读全文
posted @ 2020-05-06 23:34 桌子哥 阅读(840) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):字符串类:第14题:最长公共前缀:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。
摘要:题目: 最长公共前缀:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 说明: 所有输入只包含小写字母 a-z 。 思路: 思路较简单。 程序: class Solution: def longestCommonPrefix(self, strs: List[ 阅读全文
posted @ 2020-05-06 23:05 桌子哥 阅读(1099) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):字符串类:第20题:有效的括号:给定一个只包括 '(',')','{','}','[',']'&#160;的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。
摘要:题目: 有效的括号:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 思路: 之前做过,使用字典和栈来实现。 程序: class S 阅读全文
posted @ 2020-05-06 22:49 桌子哥 阅读(1288) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):数学类:第223题:矩形面积:在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。 每个矩形由其左下顶点和右上顶点坐标表示,如图所示。
摘要:题目: 矩形面积:在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。 每个矩形由其左下顶点和右上顶点坐标表示,如图所示。 说明: 假设矩形面积不会超出 int 的范围。 思路: 中学应用题,按照思路就可以求解了。 程序: class Solution: def computeArea(sel 阅读全文
posted @ 2020-05-06 17:19 桌子哥 阅读(869) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):数学类:第231题:2的幂:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
摘要:题目: 2的幂:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 思路: 本题思路较简单。 程序: class Solution: def isPowerOfTwo(self, n: int) -> bool: if n <= 0: return False if n == 1: retur 阅读全文
posted @ 2020-05-06 16:24 桌子哥 阅读(605) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):数学类:第172题:阶乘后的零:给定一个整数 n,返回 n! 结果尾数中零的数量。
摘要:题目: 阶乘后的零:给定一个整数 n,返回 n! 结果尾数中零的数量。 说明: 你算法的时间复杂度应为 O(log n) 。 思路: 结果末尾的0只可能由5*2,5*4,5*6和5*8得来,往小了说就是5*2,因此找出可能有多少个5是本题的关键。因为限制了时间复杂度,因此使用这样的思路,没有限制的话 阅读全文
posted @ 2020-05-06 16:13 桌子哥 阅读(632) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):数学类:第171题:Excel表列序号:给定一个Excel表格中的列名称,返回其相应的列序号。
摘要:题目: Excel表列序号:给定一个Excel表格中的列名称,返回其相应的列序号。 例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ... 思路: 第168题的逆过程,思路较简单。 程序: class Solution: def titl 阅读全文
posted @ 2020-05-06 16:01 桌子哥 阅读(627) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):数学类:第168题:Excel表列名称:给定一个正整数,返回它在 Excel 表中相对应的列名称。
摘要:题目: Excel表列名称:给定一个正整数,返回它在 Excel 表中相对应的列名称。 例如, 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ... 思路: 利用字典来做,思路较简单。 程序: class Solution: def conve 阅读全文
posted @ 2020-05-06 15:42 桌子哥 阅读(808) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):数学类:第69题:x 的平方根:实现&#160;int sqrt(int x)&#160;函数。 计算并返回&#160;x&#160;的平方根,其中&#160;x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
摘要:题目: x 的平方根:实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 思路: 本题思路较简单。 程序: class Solution: def mySqrt(self, x: int) -> 阅读全文
posted @ 2020-05-06 14:49 桌子哥 阅读(686) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):数学类:第67题:二进制求和:给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。
摘要:题目: 二进制求和:给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。 提示: 每个字符串仅由字符 '0' 或 '1' 组成。1 <= a.length, b.length <= 10^4字符串如果不是 "0" ,就都不含前导零。 思路: 模拟二进制 阅读全文
posted @ 2020-05-06 11:26 桌子哥 阅读(1078) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):数学类:第50题:Pow(x, n):实现 pow(x, n) ,即计算 x 的 n 次幂函数。
摘要:题目: Pow(x, n):实现 pow(x, n) ,即计算 x 的 n 次幂函数。 说明: -100.0 < x < 100.0 n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。 思路:暴力法,然后做了下改进,纯粹的暴力法会超时。 程序: class Solution 阅读全文
posted @ 2020-05-06 10:49 桌子哥 阅读(417) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):数学类:第29题:两数相除:给定两个整数,被除数&#160;dividend&#160;和除数&#160;divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数&#160;dividend&#160;除以除数&#160;divisor&#160;得到的商。
摘要:题目: 两数相除:给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 阅读全文
posted @ 2020-05-05 19:28 桌子哥 阅读(670) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):数学类:第13题:罗马数字转整数:给定一个罗马数字,将其转换成整数。
摘要:题目: 罗马数字转整数: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 X 阅读全文
posted @ 2020-05-05 18:03 桌子哥 阅读(283) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):数学类:第12题:整数转罗马数字:给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内。
摘要:题目: 整数转罗马数字: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 X 阅读全文
posted @ 2020-05-05 17:44 桌子哥 阅读(534) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):数学类:第9题:回文数:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
摘要:题目: 回文数:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 进阶: 你能不将整数转为字符串来解决这个问题吗? 思路: 思路一:将整数转为字符串。 思路二:直接颠倒数字。 程序1: class Solution: def isPalindrome(self 阅读全文
posted @ 2020-05-05 16:57 桌子哥 阅读(813) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):数学类:第8题:字符串转换整数 (atoi):请你来实现一个 atoi 函数,使其能将字符串转换成整数。
摘要:题目: 字符串转换整数 (atoi):请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号 阅读全文
posted @ 2020-05-05 16:46 桌子哥 阅读(346) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):数学类:第7题:整数反转:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
摘要:题目: 整数反转:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 思路: 思路简单。 程序: class Sol 阅读全文
posted @ 2020-05-05 10:46 桌子哥 阅读(561) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):双指针类:第125题:验证回文串:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。
摘要:题目: 验证回文串:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 思路: 典型双指针的思路,比较简单,在网上找了函数isalnum()用来判断是否是字母,非常好用。 程序: class Solution: def  阅读全文
posted @ 2020-05-05 10:31 桌子哥 阅读(552) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):双指针类:第28题:实现 strStr():实现&#160;strStr()&#160;函数。 给定一个&#160;haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回&#160; -1。
摘要:题目: 实现 strStr():实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 思路: 思路比较简单,暴力法。 程序: class So 阅读全文
posted @ 2020-05-05 10:14 桌子哥 阅读(351) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第25题:K 个一组翻转链表:给你一个链表,每&#160;k&#160;个节点一组进行翻转,请你返回翻转后的链表。 k&#160;是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是&#160;k&#160;的整数倍,那么请将最后剩余的节点保持原有顺序。
摘要:题目: K 个一组翻转链表:给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 示例: 给你这个链表:1->2->3->4->5 当 k = 2 时,应当返回: 2-> 阅读全文
posted @ 2020-05-03 23:12 桌子哥 阅读(433) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第109题:有序链表转换二叉搜索树:给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点&#160;的左右两个子树的高度差的绝对值不超过 1。
摘要:题目: 有序链表转换二叉搜索树:给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 思路: 看到二叉树要想到用递归的思想,为了找到根节点,使用双指针法,快指针是慢指针速度的二倍,快指针到 阅读全文
posted @ 2020-05-03 21:24 桌子哥 阅读(690) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第23题:合并K个排序链表:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
摘要:题目: 合并K个排序链表:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 思路: 暴力法 程序: # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.va 阅读全文
posted @ 2020-05-03 17:29 桌子哥 阅读(314) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第148题:排序链表:在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。
摘要:题目: 排序链表:在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 思路: 看到时间复杂度为 O(n log n) ,想到使用二分法,但是在链表里的二分法还没有想到思路,先使用懒人方法做一下,竟然通过了,哈哈哈,万万没想到,之后再补按照要求的程序。 程序1:这个程序是不符合 阅读全文
posted @ 2020-05-03 16:47 桌子哥 阅读(361) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第147题:对链表进行插入排序:插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。
摘要:题目: 对链表进行插入排序:插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。 思路: 使用数组,也属于懒人做法,最后使用尾插 阅读全文
posted @ 2020-05-03 16:23 桌子哥 阅读(355) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第143题:重排链表:给定一个单链表&#160;L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
摘要:题目: 重排链表:给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 思路: 使用了懒人做法,使用了栈,应该还有更好的方法,想到后做补充。 程序: # Defin 阅读全文
posted @ 2020-05-03 11:09 桌子哥 阅读(901) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第142题:环形链表 II:给定一个链表,返回链表开始入环的第一个节点。&#160;如果链表无环,则返回&#160;null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。
摘要:题目: 环形链表 II:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。 进阶:你是否可以不用 阅读全文
posted @ 2020-05-03 10:50 桌子哥 阅读(290) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第92题:反转链表 II:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
摘要:题目: 反转链表 II:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明:1 ≤ m ≤ n ≤ 链表长度。 示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5-> 阅读全文
posted @ 2020-05-02 22:21 桌子哥 阅读(421) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第86题:分隔链表:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。 你应当保留两个分区中每个节点的初始相对位置。
摘要:题目: 分隔链表:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。 你应当保留两个分区中每个节点的初始相对位置。 思路: 要保证相对位置不变,使用尾插法。再使用两个空链表,一个存放小于x的,一个存放大于等于x的,然后组合。 程序: # Defin 阅读全文
posted @ 2020-05-02 19:14 桌子哥 阅读(506) 评论(0) 推荐(0) 编辑
Leetcode练习(python):链表类:第82题:删除排序链表中的重复元素 II:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
摘要:题目: 删除排序链表中的重复元素 II:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 思路: 懒人思维,使用哈希表。 程序: # Definition for singly-linked list. # class ListNode: # def __ini 阅读全文
posted @ 2020-05-02 17:22 桌子哥 阅读(545) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第61题:旋转链表:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。
摘要:题目: 旋转链表:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 思路: 将链表成环进行旋转,对于K,需要判断数目,使用超过了链表的长度。 程序: # Definition for singly-linked list. # class ListNode: # de 阅读全文
posted @ 2020-05-01 17:43 桌子哥 阅读(714) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第237题:删除链表中的节点:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。
摘要:题目: 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 现有一个链表 -- head = [4,5,1,9],它可以表示为: 说明: 链表至少包含两个节点。 链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表中的一个有效节点。 不要从你的 阅读全文
posted @ 2020-05-01 17:13 桌子哥 阅读(375) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第234题:回文链表:请判断一个链表是否为回文链表。
摘要:题目: 回文链表:请判断一个链表是否为回文链表。 进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 思路: 利用栈的性质来判断很方便,但是空间复杂度为O(n)。 想一想空间复杂度为O(1) 的方法,之后补充。 程序1: # Definition for singly-linke 阅读全文
posted @ 2020-05-01 16:30 桌子哥 阅读(438) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第206题:反转链表:反转一个单链表。
摘要:题目: 反转链表:反转一个单链表。 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 思路: 思路一:使用栈的思想。 思路二:使用迭代。 思路三:使用递归。 程序1: # Definition for singly-linked list. # class ListNode: # de 阅读全文
posted @ 2020-05-01 15:17 桌子哥 阅读(258) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第203题:移除链表元素:删除链表中等于给定值 val 的所有节点。
摘要:题目: 移除链表元素:删除链表中等于给定值 val 的所有节点。 思路: 链表的常规题,练过好多次了,双指针,哨兵节点防止头结点被是目标节点。 程序: # Definition for singly-linked list. # class ListNode: # def __init__(self 阅读全文
posted @ 2020-05-01 14:45 桌子哥 阅读(329) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第160题:相交链表:编写一个程序,找到两个单链表相交的起始节点。
摘要:题目: 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 思路: 看了一下想到了使用哈希表,这个很方便,肯定还有其他的方法,之后再补充。 程序: # Definition for singly-linked list. # class ListNode: # 阅读全文
posted @ 2020-05-01 14:32 桌子哥 阅读(497) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第141题:环形链表:给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。
摘要:题目: 环形链表:给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 思路: 双指针 程序: # Definition for singly-linked list. # 阅读全文
posted @ 2020-05-01 14:17 桌子哥 阅读(339) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):链表类:第83题:删除排序链表中的重复元素:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
摘要:题目: 删除排序链表中的重复元素:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 思路: 双指针法。 程序1:暴力法,超时了 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): 阅读全文
posted @ 2020-05-01 14:10 桌子哥 阅读(541) 评论(0) 推荐(0) 编辑