算法
umbrellasoft
这个作者很懒,什么都没留下…
展开
-
递归为什么那么慢?递归的改进算法
不知道大家发现没有,执行递归算法,特别是递归执行层数多的时候,结果极其的慢,而且递归层数达到一定的值,还可能出现内存溢出的情况。本文就要将为你解释原因和对应的解决方案。一、递归与循环1.1所谓的递归慢到底是什么原因呢?大家都知道递归的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等,这是通过一个递归工作栈实现的。具体是每次调用函数本身要保存的内容包括:局部变量...转载 2018-09-16 00:16:05 · 26444 阅读 · 1 评论 -
现代互联网的TCP拥塞控制(CC)算法评谈
本文转载自:https://blog.csdn.net/dog250/article/details/81973915原作者:dog250动机写这篇文章本质上的动机是因为前天发了一个朋友圈,见最后的写在最后,但实际上,我早就想总结总结TCP拥塞控制算法点点滴滴了,上周总结了一张图,这周接着那些,写点文字。前些天,Linux中国微信公众号推了一篇文章,上班路上仔细阅读了一下,感受颇深...转载 2018-09-16 09:57:37 · 18481 阅读 · 0 评论 -
这是一堆来自算法的基本核心的要素
1.算法定义算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。一个...转载 2018-09-16 10:26:20 · 18078 阅读 · 0 评论 -
贪心算法及几个经典例子
贪心算法一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态...转载 2018-09-17 09:27:26 · 21910 阅读 · 1 评论 -
python数据分析6:双色球 使用线性回归算法预测下期中奖结果
本次将进行下期双色球号码的预测,想想有些小激动啊。代码中使用了线性回归算法,这个场景使用这个算法,预测效果一般,各位可以考虑使用其他算法尝试结果。发现之前有很多代码都是重复的工作,为了让代码看的更优雅,定义了函数,去调用,顿时高大上了#!/usr/bin/python# -*- coding:UTF-8 -*- #导入需要的包import pandas as pdimpor...转载 2018-09-17 12:22:59 · 29383 阅读 · 4 评论 -
2019数据结构考研(一)
2019数据结构考研(一)知识框架数据结构的基本概念数据:数据是信息的载体,是所有能描述事物属性的数,字符以及所有能输入到计算机被计算机程序识别和处理的符号的集合 数据元素:数据元素是数据的基本单位 数据项:数据项是构成数据元素不可分割的最小单位注意:不要混淆数据,数据元素和数据项,例如:学生记录就是一个数据元素,它由学号,姓名,性别等数据项组成 数据对象:数据对象是具有相同...转载 2018-09-17 13:45:27 · 25109 阅读 · 0 评论 -
2019数据结构考研(二)-----线性表
知识框架线性表的基本概念线性表的定义线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,n为线性表的表长,当n=0时,则线性表为空表,线性表的第一个元素称为表头,最后一个元素称为表尾线性表的基本特点线性表的元素个数有上限 线性表里的元素具有顺序性 表里的元素类型都相同 线性表表示一种逻辑上一对一的关系,是逻辑结构,而顺序表和链表则表示一种存储结构,不要...转载 2018-09-17 13:47:24 · 17602 阅读 · 0 评论 -
2019数据结构考研(三)------栈和队列
栈和队列知识架构栈栈的基本概念栈的定义:栈是一种只允许在一端进行插入或者删除的线性表(后进先出的线性表)栈顶:栈中允许插入和删除的一端栈底:固定的空栈栈的顺序存储结构栈的顺序表示#define MaxSize 50typedef struct { ElemType data[MaxSize]; int top;//栈顶指针 }SqStac...转载 2018-09-17 22:18:07 · 17777 阅读 · 2 评论 -
LeetCode 刷题指南(一):为什么要刷题
虽然刷题一直饱受诟病,不过不可否认刷题确实能锻炼我们的编程能力,相信每个认真刷题的人都会有体会。现在提供在线编程评测的平台有很多,比较有名的有 hihocoder,LintCode,以及这里我们关注的 LeetCode。代码提交曲线LeetCode 是一个非常棒的 OJ(Online Judge)平台,收集了许多公司的面试题目。相对其他 OJ 平台而言,有着下面的几个优点:题目全部...转载 2018-09-19 06:05:11 · 22054 阅读 · 0 评论 -
LeetCode 120. 三角形最小路径和
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。...原创 2018-09-20 09:51:53 · 17003 阅读 · 0 评论 -
Leetcode 部分题解
算法思想双指针排序快速选择堆排序桶排序荷兰国旗问题贪心思想二分查找分治搜索BFSDFSBacktracking动态规划斐波那契数列矩阵路径数组区间分割整数最长递增子序列最长公共子序列0-1 背包股票交易字符串编辑数学素数最大公约数进制转换阶乘字符串加法减法相遇问题多数投票问题其它数据结构相关链表...转载 2018-10-13 00:26:47 · 15953 阅读 · 0 评论 -
剑指offer题解
1. 前言2. 实现 Singleton3. 数组中重复的数字4. 二维数组中的查找5. 替换空格6. 从尾到头打印链表7. 重建二叉树8. 二叉树的下一个结点9. 用两个栈实现队列10.1 斐波那契数列10.2 跳台阶10.3 矩形覆盖10.4 变态跳台阶11. 旋转数组的最小数字12. 矩阵中的路径13. 机器人的运动范围14. 剪绳子15. 二进制中 1...转载 2018-10-13 00:35:11 · 14887 阅读 · 0 评论 -
算法从入门到精通
一、前言二、算法分析数学模型注意事项ThreeSum倍率实验三、排序选择排序冒泡排序插入排序希尔排序归并排序快速排序堆排序小结四、并查集Quick FindQuick Union加权 Quick Union路径压缩的加权 Quick Union比较五、栈和队列栈队列六、符号表初级实现二叉查找树2-3 查找树红黑树...转载 2018-10-14 09:32:11 · 16589 阅读 · 0 评论 -
Leetcode161: Repeated DNA Sequences
原文地址 : https://so.csdn.net/so/search/s.do?q=leetcode161&t=%20&u=All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACGAATTCCG". When studying DNA, it...转载 2019-04-11 22:13:02 · 9576 阅读 · 0 评论 -
[leetcode] 163. Missing Ranges 解题报告
原文地址 : https://blog.csdn.net/u013089961/article/details/49906469All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACGAATTCCG". When studying DNA, it is some...转载 2019-04-11 22:14:23 · 9640 阅读 · 0 评论 -
172. 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释:3! = 6, 尾数中没有零。示例2:输入: 5输出: 1解释:5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为O(logn)。...原创 2019-04-12 00:20:37 · 9638 阅读 · 0 评论 -
173. 二叉搜索树迭代器
实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。调用 next() 将返回二叉搜索树中的下一个最小的数。示例:BSTIterator iterator = new BSTIterator(root);iterator.next(); // 返回 3iterator.next(); // 返回 7iterator.hasNext(); //...原创 2019-04-12 00:20:51 · 9690 阅读 · 1 评论 -
174. 地下城游戏
一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他...原创 2019-04-12 00:21:09 · 9723 阅读 · 0 评论 -
175. 组合两个表
SQL架构Create table Person (PersonId int, FirstName varchar(255), LastName varchar(255))Create table Address (AddressId int, PersonId int, City varchar(255), State varchar(255))Truncate table Perso...原创 2019-04-13 00:18:59 · 9119 阅读 · 0 评论 -
176. 第二高的薪水
Create table If Not Exists Employee (Id int, Salary int)Truncate table Employeeinsert into Employee (Id, Salary) values ('1', '100')insert into Employee (Id, Salary) values ('2', '200')insert int...原创 2019-04-13 00:19:01 · 8991 阅读 · 0 评论 -
177. 第N高的薪水
编写一个 SQL 查询,获取 Employee 表中第n高的薪水(Salary)。+----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+例如上述Employee表,n = 2时,应返回第二高的薪水200。如果...原创 2019-04-13 00:19:05 · 9095 阅读 · 0 评论 -
178. 分数排名
Create table If Not Exists Scores (Id int, Score DECIMAL(3,2))Truncate table Scoresinsert into Scores (Id, Score) values ('1', '3.5')insert into Scores (Id, Score) values ('2', '3.65')insert into...原创 2019-04-13 00:19:09 · 9026 阅读 · 0 评论 -
179. 最大数
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。...原创 2019-04-13 00:19:14 · 9154 阅读 · 0 评论 -
180. 连续出现的数字
Create table If Not Exists Logs (Id int, Num int)Truncate table Logsinsert into Logs (Id, Num) values ('1', '1')insert into Logs (Id, Num) values ('2', '1')insert into Logs (Id, Num) values ('3',...原创 2019-04-13 00:19:18 · 9132 阅读 · 0 评论 -
181. 超过经理收入的员工
Create table If Not Exists Employee (Id int, Name varchar(255), Salary int, ManagerId int)Truncate table Employeeinsert into Employee (Id, Name, Salary, ManagerId) values ('1', 'Joe', '70000', '3')...原创 2019-04-13 00:19:22 · 9108 阅读 · 0 评论 -
182. 查找重复的电子邮箱
Create table If Not Exists Person (Id int, Email varchar(255))Truncate table Personinsert into Person (Id, Email) values ('1', 'a@b.com')insert into Person (Id, Email) values ('2', 'c@d.com')inse...原创 2019-04-13 00:19:28 · 9177 阅读 · 0 评论 -
183. 从不订购的客户
Create table If Not Exists Customers (Id int, Name varchar(255))Create table If Not Exists Orders (Id int, CustomerId int)Truncate table Customersinsert into Customers (Id, Name) values ('1', 'Joe...原创 2019-04-13 00:19:34 · 9094 阅读 · 0 评论 -
184. 部门工资最高的员工
Create table If Not Exists Employee (Id int, Name varchar(255), Salary int, DepartmentId int)Create table If Not Exists Department (Id int, Name varchar(255))Truncate table Employeeinsert into Emp...原创 2019-04-13 00:19:39 · 9090 阅读 · 0 评论 -
LeetCode 156 Binary Tree Upside Down 上下翻转二叉树
本文转载自:https://segmentfault.com/a/1190000016755610LeetCode 156 Binary Tree Upside DownGiven a binary tree where all the right nodes are either leaf nodes with a sibling (a left node that shares ...转载 2019-04-11 22:10:16 · 9891 阅读 · 0 评论 -
207. 课程表
现在你总共有 n 门课需要选,记为0到n-1。在选修某些课程之前需要一些先修课程。例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]] 输出: true解释:总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能...原创 2019-04-16 09:12:04 · 8909 阅读 · 0 评论 -
208. 实现 Trie (前缀树)
实现一个 Trie (前缀树),包含insert,search, 和startsWith这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 falsetrie.startsWith("app...原创 2019-04-16 09:12:24 · 8928 阅读 · 0 评论 -
209. 长度最小的子数组
给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组[4,3]是该条件下的长度最小的连续子数组。进阶:如果你已经完成了O(n) 时间复杂度的解法, 请尝试O(n log n) 时间...原创 2019-04-16 09:12:48 · 8913 阅读 · 0 评论 -
210. 课程表 II
现在你总共有 n 门课需要选,记为0到n-1。在选修某些课程之前需要一些先修课程。例如,想要学习课程 0 ,你需要先完成课程1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。示例1:输入: 2, [[1,0]] ...原创 2019-04-16 09:13:11 · 8919 阅读 · 0 评论 -
211. 添加与搜索单词 - 数据结构设计
设计一个支持以下两种操作的数据结构:void addWord(word)bool search(word)search(word)可以搜索文字或正则表达式字符串,字符串只包含字母.或a-z。. 可以表示任何一个字母。示例:addWord("bad")addWord("dad")addWord("mad")search("pad") -> false...原创 2019-04-16 09:13:35 · 8969 阅读 · 0 评论 -
212. 单词搜索 II
给定一个二维网格board和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。示例:输入: words = ["oath","pea","eat","rain"] and board =[ ['...原创 2019-04-16 09:13:58 · 8929 阅读 · 0 评论 -
213. 打家劫舍 II
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例1:输入: [2,3,2]输出: 3解释:...原创 2019-04-16 09:14:17 · 8892 阅读 · 0 评论 -
214. 最短回文串
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。示例1:输入: "aacecaaa"输出: "aaacecaaa"示例 2:输入: "abcd"输出: "dcbabcd"...原创 2019-04-16 09:15:35 · 8981 阅读 · 0 评论 -
215. 数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明: 你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。...原创 2019-04-16 09:18:21 · 8899 阅读 · 0 评论 -
LeetCode 157. Read N Characters Given Read4
本文转载自 : https://blog.csdn.net/xinqrs01/article/details/54093704The API: int read4(char *buf) reads 4 characters at a time from a file.The return value is the actual number of characters read. For e...转载 2019-04-11 22:10:29 · 9505 阅读 · 0 评论 -
[Leetcode] 158. Read N Characters Given Read4 II - Call multiple times 解题报告
本文转载自 : https://blog.csdn.net/u013089961/article/details/49868591Given an input string, reverse the string word by word.For example,Given s = "the sky is blue",return "blue is sky the".Upda...转载 2019-04-11 22:10:34 · 9714 阅读 · 0 评论