算法与数据结构
WarmSword
Show u what I do, what I like, what I need, what I am interested in. Yes, it is all about me. That's all. :)
http://allenwu.club
展开
-
球盒问题之一:方案概览
经典的n球放m盒问题一、分类首先看一下分类,主要有8种: 1)球 同,盒 同,无 空箱 2)球 同,盒 同,允许空箱 3)球 同,盒不同,无 空箱 4) 球 同,盒不同,允许空箱 5) 球不同,盒相同,无 空箱 6)球不同,盒相同,允许空箱 7) 球不同,盒不同,无 空箱 8)球不同,盒不同,允许空箱做这种题型关键是要对号入座,下面的解释分析统一假设原创 2016-11-09 21:51:04 · 3559 阅读 · 0 评论 -
leetcode: 至少有K个重复字符的最长子串
需求找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。示例 1:输入:s = "aaabb", k = 3输出:3最长子串为 "aaa" ,其中 'a' 重复了 3 次。示例 2:输入:s = "ababbc", k = 2输出:5最长子串为 "ababb" ,其中 'a' 重复了...原创 2018-11-17 22:43:44 · 1520 阅读 · 0 评论 -
Leetcode:累加数
累加数是一个字符串,组成它的数字可以形成累加序列。一个有效的累加序列必须至少包含 3 个数。除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和。给定一个只包含数字 '0'-'9' 的字符串,编写一个算法来判断给定输入是否是累加数。说明: 累加序列里的数不会以 0 开头,所以不会出现 1, 2, 03 或者 1, 02, 3 的情况。示例 1:输入: "1123...原创 2018-10-23 19:38:29 · 1166 阅读 · 0 评论 -
Leetcode:数据流的中位数
Leetcode:数据流的中位数 中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。 double findMedian() - 返...原创 2018-10-22 16:11:03 · 1301 阅读 · 1 评论 -
Leetcode:填充同一层的兄弟节点 II
Leetcode:填充同一层的兄弟节点 II 给定一个二叉树struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下...原创 2018-10-19 11:01:25 · 290 阅读 · 0 评论 -
Leetcode-不同路径
Leetcode-不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n...原创 2018-10-15 19:31:29 · 564 阅读 · 0 评论 -
完美洗牌算法简析与代码实现
题目需求数组[a1,a2,a3,a4,b1,b2,b3,b4],洗牌后变成[b1,a1,b2,a2,b3,a3,b4,a4]。不得使用额外的空间,即空间复杂度要求为O(1)。因为如果用线性空间,直接变成2个链表归并就行,特别简单。 算法思路1)定义与约定数组长度为2n,下标i从1开始计数,且i的范围[1,2n]。2)算法思路公式 1)i->(2*i)%...原创 2018-09-02 15:42:00 · 2869 阅读 · 1 评论 -
有环链表找交叉点的数学公式
有环链表找交叉点的数学公式题目已知一个链表有环,要求找到交叉点。算法用2个指针,一快一慢,快指针每次走2步,慢指针每次走一步。当二者交汇时,将快指针拉回起点,然后快指针也每次走一步,当二者下次交汇时即为交叉点。数学公式先看示意图如下:定义:A为链表起点,B为交叉点,C为快慢指针第一次交汇点,D为慢指针第一次到达B点...原创 2018-08-11 16:54:28 · 895 阅读 · 1 评论 -
打印金字塔式整齐杨辉三角
打印金字塔式整齐杨辉三角杨辉三角是比较基础的算法题,如果加上对齐,要求整齐不错位的金字塔式,需要考虑的细节就相对要多一些。先说需求,输入行数,打印出整齐的金字塔式杨辉三角。大体思路将杨辉三角中的数都放到一个数组中,如果简单化,也可以放到2维数组中,行列的概念比较明显。计算杨辉三角,cur[i]=last[i-1]+last[i],i取值从1到line-1,即去除首尾的闭区间。由于用到了前一行,所以...原创 2018-07-10 00:04:54 · 2779 阅读 · 0 评论 -
算法题:数组划分为和最相近2个子数组
算法题:数组划分为和最相近2个子数组将一个数组划分为2个子数组,要求子数组的和尽可能接近。思路将数组排序,并计算出整个数组和。计算区间和。从最小元素开始计算一个连续区间的和,当和小于数组和一半时,区间右边界右移,当和大于数组和一半时,区间左边界右移。当区间和最接近数组和的一半时记录左右边界的位置和区间和。当区间和等于数组一半时,此时区间中的元素即为一个划分方案中的子数组,直接返...原创 2018-05-07 00:12:30 · 4475 阅读 · 1 评论 -
牛顿迭代公式计算平方根立方根
牛顿迭代公式计算平方根立方根如何用计算机来求一个数的平方根与立方根呢。可以采用牛顿迭代公式。相类似的还有GCD最大公约数算法,也即欧几里德算法,利用余数辗转相除。牛顿迭代公式思路用一个曲线的切线的根去表示一个曲线的根(根指一元方程的解,多元方程的解叫一组解,不叫根)。然后再从曲线上前一根处做切线,再求新切线的根,直到误差达到自己预期的精度范围内。牛顿迭代公式曲线为y=f(x)y=f(x),在x0处的原创 2017-09-18 22:50:04 · 4882 阅读 · 0 评论 -
球盒问题之三:n分解成m个正数和所有组合
球盒问题之三:n分解成m正数和所有组合问题将正整数n分解成m个正整数之和,给出所有组合。此问题等同于等同于n个球放到m个盒子中,盒子不能为空,球与盒子都完全相同。算法这个问题并不难,只要把去重的问题解决,基本都能给出正确的算法。此处用有序数列的方式给出一种算法。不保证算法很高效啊。:)。如有更好的算法,请推荐下啊。用有序数列来解决去重的问题,即得出的结果用一个二维数组保存,一行为一个结果,但保证每行原创 2016-12-15 20:00:25 · 1454 阅读 · 0 评论 -
合并k个增序链表
合并k个增序链表问题归并排序是一个比较简单的算法,特别是二路归并排序,且用数组存储各个数列时。修改索引只需要简单的++操作即可。但是如果换成链表,将二路换成多路,对链表操作接触不多的还是值得注意练习下的。算法多个链表的归并操作,其实容易混淆的就是指针的指向问题。A链表中某节点指向B中某节点,指完之后容易弄混,或者破坏了原有链表的关系而未保存导致遗漏。只要把每次比较过后指针指向的修改操作统一起来,问题原创 2016-12-15 20:50:05 · 403 阅读 · 0 评论 -
在一个4X4方格线上,1只蚂蚁从A点出发,沿着方格线爬到B点简析
题目在一个4*4方格线上,1只蚂蚁从A点出发,沿着方格线爬到B点,如下图所示,规定每次只能向右或向上爬,问:1. 从A到B有多少条不同的路线?一共8步,从中选出向右走的4步,剩下4步向上走。即8选4,C48C_8^4=702. 如果把方格线扩展为n*m,则又有多少条不同的路线?Cnn+mC_{n+m}^{n} 原理同上。3. 突然天降暴雨,洪水冲断了s条线段假如蚂蚁可以朝任意方向爬了,被洪水冲断原创 2016-11-25 21:51:52 · 12443 阅读 · 0 评论 -
球盒问题之二:n分解成m正数和解题代码
球盒问题之二:n分解成m正数和解题代码在上一篇博文 球盒问题之一:方案概览 中给出了S(n,m)的代码实现方案。 而对于前2种情况的解决方案并未给出代码与问题解决的思路。在这里,就将第一种与第二种情况下的解决问题的思路与代码分享。思路:第一种情况,n球同,m盒同,不空。记解为D(n,m)。 第二种情况,n球同,m盒同,可空,记解为H(n,m)。那第一种情况与第二种情况有什么关系呢。先看第一种情况原创 2016-11-09 23:57:40 · 858 阅读 · 0 评论 -
Leetcode 18. 四数之和
给定一个包含n个整数的数组nums和一个目标值target,判断nums中是否存在四个元素a,b,c和d,使得a+b+c+d的值与target相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合...原创 2019-03-03 21:42:40 · 157 阅读 · 0 评论