自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

leegendlee的博客

感觉自己萌萌哒

  • 博客(21)
  • 收藏
  • 关注

原创 最大字母矩阵

有一个单词清单,请设计一个高效算法,计算由清单中单词组成的最大子矩阵,要求矩阵中的行和列都是清单中的单词。给定一个string数组dic,代表单词清单,同时给定清单的大小n,请返回最大子矩阵的面积。保证单词清单的大小小于等于50,且某一长度的串的数量小于等于12。测试样例:["aaa","aaa","aaa","bb","bb"]返回:9解析:其实是最长连续子序列的变形。矩阵行列都相同,意味着需要...

2018-04-14 12:51:02 790

原创 最长合成字符串

有一组单词,请编写一个程序,在数组中找出由数组中字符串组成的最长的串A,即A是由其它单词组成的(可重复)最长的单词。给定一个string数组str,同时给定数组的大小n。请返回最长单词的长度,保证题意所述的最长单词存在。测试样例:["a","b","c","ab","bc","abc"],6返回:3解析:遇到这种求最值的问题,当和序列顺序无关时,先排序一般来说是没错的。按字符串长度正向排列

2018-04-14 12:35:05 298

原创 和为S的连续正数序列

小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数序列。序列内按照从小至...

2018-04-14 12:04:18 112

原创 丑数

把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解析:其实这个题最先想到的应该是暴力求解,用一个数组存放所有找到的丑数,只要丑数的数量没到N就一直用循环求解,但是当N>1000时,速度会开始下降,N到1500时会超时。所以更好的方法是利用丑数找丑数,丑数 = a ...

2018-04-14 11:52:21 440

原创 穿点最多的直线

在二维平面上,有一些点,请找出经过点数最多的那条线。给定一个点集vector<point>p和点集的大小n,没有两个点的横坐标相等的情况,请返回一个vector<double>,代表经过点数最多的那条直线的斜率和截距。</double></point>解析:其实是散列问题,先两层循环求得每两个点之间的斜率,以斜率为键,点为值做一个散列表。然后遍历哈希...

2018-04-14 11:43:05 415

原创 n皇后问题

请设计一种算法,解决著名的n皇后问题。这里的n皇后问题指在一个nxn的棋盘上放置n个棋子,使得每行每列和每条对角线上都只有一个棋子,求其摆放的方法数。给定一个int n,请返回方法数,保证n小于等于15测试样例:1返回:1解析:经典八皇后问题的貌似升级版,其实完全一样,不过如果棋盘换成矩阵的话应该会更容易出错一些。用一个辅助数组存放每一行皇后的位置,然后基于DFS使用回溯法,其实就是套了个列的循环...

2018-04-14 00:38:20 229

原创 变态跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解析:普通跳台阶的升级版,但其实代码写法差别比较大。普通跳台阶的递推式:dp[i] = dp[i - 第1种跳法] + ... + dp[i - 第k种跳法]。变态跳台阶不仅要加上之前全部的,还得多加个1,所以是两层循环,内层逆向。代码: public int JumpFloorII...

2018-04-14 00:28:20 113

原创 叠罗汉II

叠罗汉是一个著名的游戏,游戏中一个人要站在另一个人的肩膀上。为了使叠成的罗汉更稳固,我们应该让上面的人比下面的人更轻一点。现在一个马戏团要表演这个节目,为了视觉效果,我们还要求下面的人的身高比上面的人高。请编写一个算法,计算最多能叠多少人,注意这里所有演员都同时出现。给定一个二维int的数组actors,每个元素有两个值,分别代表一个演员的身高和体重。同时给定演员总数n,请返回最多能叠的人数。保证...

2018-04-14 00:21:40 792

原创 集合的子集

请编写一个方法,返回某集合的所有非空子集。给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异。各子集内部从大到小排序,子集之间字典逆序排序,见样例。测试样例:[123,456,789]返回:{[789,456,123],[789,456],[789,123],[789],[456 123],[456],[123]}解析:典型的DFS路径问题...

2018-04-14 00:13:10 664

原创 机器人走方格II

有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。注意这次的网格中有些障碍点是不能走的。给定一个int[][] map(C++ 中为vector >),表示网格图,若map[i][j]为1则说明该点不是障碍点,否则则为障碍。另外给定int x,int y,表示网格的大小。请返回机器人从(0,0)走到(x - 1,y - ...

2018-04-14 00:03:26 566

原创 输出单层结点

对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表。给定二叉树的根结点指针TreeNode* root,以及链表上结点的深度,请返回一个链表ListNode,代表该深度上所有结点的值,请按树上从左往右的顺序链接,保证深度不超过树的高度,树上结点的值为非负整数且不超过100000。解析:层次遍历的简化版,只需要输出某一层的节点。其实就是左右子树按顺序遍历,只是在递归函数中多检查一步,若...

2018-04-13 21:12:11 149

原创 有向路径检查

对于一个有向图,请实现一个算法,找出两点之间是否存在一条路径。给定图中的两个结点的指针UndirectedGraphNode* a,UndirectedGraphNode* b(请不要在意数据类型,图是有向图),请返回一个bool,代表两点之间是否存在一条路径(a到b或b到a)。解析:有向图需要正反判断两次路径是否存在。对于出发点而言,需要从其本身开始寻找,再从其邻居点查找,为递归。Tips:当图...

2018-04-13 21:05:20 167

原创 二叉树平衡检查

实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。给定指向树根结点的指针TreeNode* root,请返回一个bool,代表这棵树是否平衡。解析:递归,检查左右子树高度的绝对值是否<1。检查高度的函数也是递归,求出两个子树的高度后需要加1才是带父节点的高度,当递归至叶节点时,返回的高度为0。代码: private int calcH...

2018-04-13 21:00:07 342

原创 猫狗收容所

有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式,第一种为直接收养所有动物中最早进入收容所的,第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进入收容所的。       给定一个操作序列int[][2] ope(C++中为vector<vector<int>>)代表所有事件。若第一个元素为1,则代表有动物进入收容所,第二个元素为动物的编号,正数...

2018-04-13 20:53:58 543

原创 用两个栈实现队列

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解析:两个栈,一个入口一个出口。push时正常操作,pop的时候,先pop出口栈的元素,若出口栈为空,则先将所有入口栈的元素移入出口栈中,再pop出口栈。代码: Stack<Integer> stack1 = new Stack<Integer>(); Stack<Int...

2018-04-13 20:47:03 61

原创 回文链表

请编写一个函数,检查链表是否为回文。给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。测试样例:{1,2,3,2,1}返回:true{1,2,3,2,3}返回:false解析:其实和是不是链表没什么关系,任何回文、逆序都可以使用栈解决。代码: public boolean isPalindrome(ListNode pHead) { Stac...

2018-04-13 20:44:03 118

原创 链式A+B

有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。测试样例:{1,2,3},{3,2,1}返回:{4,4,4}解析:需要考虑到进位,两个链表长度不同,和进位如果发生在链表尾部时需要多加一位的情况。代码: ...

2018-04-13 20:41:48 102

原创 访问单个节点的删除

实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true解析:其实就是把后一个节点的所有信息复制到该节点并做好连接,然后删除后一个节点。代码:public class Remove { public boolean removeNode(ListNode pNode) { if (p...

2018-04-13 20:38:48 104

原创 清除行列

请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零。给定一个N阶方阵int[][](C++中为vector<vector><int>>)mat和矩阵的阶数n,请返回完成操作后的int[][]方阵(C++中为vector<vector><int>>),保证n小于等于300,矩阵中的元素为int范围内。</int>&...

2018-04-13 20:33:18 114

原创 确定字符互异

请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。测试样例:"aeiou"返回:True"BarackObama"返回:False解析:时间复杂度N^2,两层循环,每一...

2018-04-13 13:30:32 119

原创 终于把博客挪到CSDN啦,感觉自己萌萌哒

一直没用CSDN,现在开始慢慢搬家,更新ING。。。

2016-07-30 17:21:49 158

空空如也

空空如也

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

TA关注的人

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