自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 算法设计周记(十八)--Maximal Square

问题描述在给定矩阵中找出由数字"1"组成的最大正方形的面积。解法分析我们不妨用dp[i][j]表示以matrix[i-1][j-1]为右下角的正方形边长。如果该位置的值也是1,那么所能构成的最大正方形边长即是dp[i-1][j], dp[i][j-1], dp[i-1][j-1]中的最小值+1。因为即便有一边短缺,都构成不了正方形。class

2018-01-13 05:41:53 243

原创 算法设计周记(十七)--Integer Break

问题描述对正整数进行加法意义上的分割,求出其分割结果的最大乘积。解法探究我们不妨先考虑,将整数n分割成两个数的情形。显然若n为偶数,最大乘积为(n/2)*(n/2);若n为奇数,最大乘积为(n-1)/2 *(n+1)/2。当(n/2)*(n/2)和(n-1)/2 *(n+1)/2大于等于n时,我们才应该对n进行分割,分别列出不等式,解得n>=4,n>=5

2018-01-13 03:26:54 129

原创 算法设计周记(十六)--Counting Bits

问题描述给定一个非负整数n,输出从0到n每个正整数的二进制形式中数字"1"的个数。解法探究对于二进制数,每增加一位,之前的计数都相当于重复一次。例如,只有一位时,[0,1]对应的数字"1"的个数就是[0,1];增加到两位时,[2,3]对应的数字"1"的个数为[1,2],恰好是[0,1]中每个元素加一;三位数[4,5,6,7]对应[1,2,2,3],恰好是

2018-01-12 22:22:27 213

原创 算法设计周记(十五)--最短路径

问题描述给定一个等边三角形数组,找出自顶向下的最短路径。解法探究如果以三角形的顶点为起点,在算出所有路径的长度之前我们并不能确切地知道某一条路径是否为最短的。要遍历路径的话时间复杂度会呈指数级别,不太可取。那换个角度思考,如果最开始就从底层观察的话,不难发现该点元素即为最短路径长度。那往上一层,也不难推算出每一点到底层的最短路径,这样逐层往上,直到顶点,就能得到自顶

2018-01-12 20:31:30 196

原创 算法设计周记(十四)--Queue Reconstruction by Height

问题描述我们需要重新排列队列,满足任何一个"person"中h和k的含义。解法探究每一个"person"的k值实际上只与h值大于等于它的"person"有关,单独以某一个"person"为参照,除去队列中所有h值比它小的元素,其k值就是它在队列中的位置序号。那么我们不妨按照h值降序处理元素,先找出最高的那群人,以k值为角标进行排列,再找出次高的人群,按照其各自的k值

2018-01-11 11:59:34 182

原创 算法设计周记(十三)--幂

问题描述求a的b次幂对常数1337的取余结果。解法探究此题难度看似不大,但是暗藏陷阱:b可能是一个极大的数。既然不能用常规方式来解这道题,那么就不得不考虑以下公式:(a * b) % n = ((a % n) * (b % n)) % n;a ^ (b * c) = a ^ b * a ^ c。我们可以从指数的最高位开始逐位进行幂运算,并将底数事先进行取

2018-01-11 10:31:40 241

原创 算法设计周记(十二)--人生游戏

问题描述用数组模拟一个矩形区域内细胞迭代的生存状态,谓之人生游戏。分析与探究在board数组中,细胞可能的状态只有1或0,以二进制来考虑只使用了第一位,那么我们可以用第二位来存储细胞的下一状态。设置一个二重循环,遍历board中的每一个元素,用变量count来缓存该细胞周围所有活着的细胞的总数(包括它自身),需要注意的是,在进行计数时周围的元素可能已经进行过下一

2018-01-11 06:17:46 195

原创 算法设计周记(十一)--寻找重复元素

问题描述给定数组有n+1个元素,全都包含在[1,n]范围内,找出不止出现过一次的元素(它有可能重复多次)。基础解法设置一个二重循环,找到重复元素即将其返回。算法的时间复杂度为O(n²),是比较暴力的解法。class Solution {public: int findDuplicate(vector& nums) { for (vect

2018-01-11 04:50:19 198

原创 算法设计周记(十)--栈

问题描述给定一个拥有固定格式的字符串n[s],将其解析成ss…s(重复n次)的形式。解法分析这题涉及到符号匹配,可以考虑使用栈这一FILO的数据结构来帮助解决问题。因为数字必定表示倍数,不会是转换后的字符串的内容,所以遍历字符串遇到数字时,将其转换成整数形式存在int栈内;若是读到字母,将其存入缓存字符串;“[”符号意味着重复字符串的开始,这里可以将前面已经读到的内

2018-01-10 00:21:32 172

原创 算法设计周记(九)--二分查找

问题导入找出给定数组中局部峰值的角标,若有多个则任意返回一个即可。一般求解顺序遍历数组的每一个元素,找到某一个峰值立刻返回,是最容易想到的做法。class Solution {public: int findPeakElement(vector& nums) { int rtn; if (nums

2017-11-06 20:13:02 156

原创 算法设计周记(八)--层次遍历

问题导入二叉树的层次遍历问题解法分析层次遍历的问题本质是广度优先搜索,然而此题不仅需要按层访问,还需要对不同的层次做出区分。这里既然要以数组的形式作为返回值,就直接考虑按数组长度来区分层次。/** * Definition for a binary tree node. * struct TreeNode { * int v

2017-10-29 14:37:32 296

原创 算法设计周记(七)--查找

问题导入给定一个升序排列的数组以及一个目标整数,要求返回该数在数组中的角标范围,若不存在则返回[-1,-1].要求算法的时间复杂度不超过O(logN).一般求解先考虑数组可能为空的特殊状况,排除之后将返回值初始化为给定数组的范围,逐渐向内逼近即可.class Solution {public: vector searchRange(ve

2017-10-24 00:50:58 210

原创 算法设计周记(六)--Summary Ranges

问题导入对于给定的数组,求出其整数范围。如果从集合表示的角度来看待问题的话,可以理解成将列举法转化为描述法。一般求解所给数组已经做好了升序排列,那么只用顺序遍历一次,把每一个连续的整数串用字符串返回即可。class Solution {public: vector summaryRanges(vector& nums) {

2017-10-14 16:47:22 256

原创 算法设计周记(五)--字典排序

问题导入给定一个数组,将其中所有元素以字符串的形式拼接起来,要求得到最大的结果。一般解法此题的一般思路很明显,在给定数组的所有元素中找到优先级最大的那一个将它拼接到用于返回的字符串尾部,然后把它pop掉,循环此操作直到数组为空。为此我额外定义了一个函数,若“字符串A+字符串B”的字典序小于“字符串B+字符串A”,则判定字符串A的优先级低于字符串B

2017-10-08 23:14:49 192

原创 算法设计周记(四)--回溯

问题导入规定机器人仅能向下或向右前进,要求计算所有可能路径的总数。解法分析当机器人到达某个地点时,它必定是从上方或者左方移动而来,那么到达点[i][j]的路径总数就是到达点[i-1][j]和点[i][j-1]的路径数之和。而当矩阵的行数或列数为1时,路径数也仅为1。我们初始化一个二元数组path,逐步算出路径数path[i-1][j-1]即可。

2017-10-02 17:49:21 196

原创 算法设计周记(三)--桶排序

问题导入解法思考问题需要给一组杂乱无章的0,1,2排序,要求不使用库函数,并且只使用常量空间。在此基础上我立即想到的方案是采用桶排序,具体实现如下:public: void sortColors(vector& nums) { int sum[3] = {0, 0, 0}; vector::iterator it; f

2017-09-24 18:08:03 162

原创 算法设计周记(二)--Jump Game

问题描述只要能跳跃到终点,中间的过程不必深究初步探究既然过程是透明的,那么最容易想到的解法是DFS(深度优先搜索)和BFS(广度优先搜索)

2017-09-17 16:27:38 189

原创 算法设计周记(一)--大数加法

绪论:值大三开学之际,选修算法分析与设计一课,开启博客记录下自己的学习足迹,以期于过程中加深心得。

2017-09-10 19:18:38 396

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除