
刷题笔记
多啦A熊
皮皮赖赖。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
跳石板(通俗易懂的思路和方法)
所用到的知识STL中的vector容器动态规划思想编程思想将1 - M个看成一排,为其取个名字叫Slab(数组),并在走之前将这一排石板都初始化为0,然后开始走,每到一块是班上就在这块是石板上写下到这里来的步数,如果脚下踩的这块石板上写的0,说明之前没有来过,那就不可能走到这里,跳过这个石板,重新走从起点开始对这一排石板Slab进行遍历,求出可以从这块石板出发走的步数(当前石板对应位...原创 2019-04-16 18:13:21 · 817 阅读 · 0 评论 -
杨辉三角变形(高效解析)
题目链接:https://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43?tpId=37&&tqId=21276&rp=1&ru题目解析:拿到这道题大多数人的第一反应都是先将杨辉三角用一个二维数组表示出来,然后直接在第n行找就可以了,这样的方法是最直接的,但不是最高效的,虽然我一开始也是这样...原创 2019-06-10 11:43:47 · 852 阅读 · 0 评论 -
跳石板(详解)
题目链接:https://www.nowcoder.com/practice/4284c8f466814870bae7799a07d49ec8?tpId=85&&tqId=29852&rp=1&ru题目分析:这道题就是计算从N开始加,最少加几次等于M,前提条件是每次相加的数必须是当前数的约数思路分析:将M个石板看做一个保存结果的数组jumpNum,每个ju...原创 2019-06-09 21:43:26 · 796 阅读 · 0 评论 -
和为S的连续正数序列(双指针详解)
题目解析: 题目是小明算数,这里不赘述!->题目链接<- 看到这道题目的可以马上想到等差数列,这个题目可以换一种说法就是求有多少个等差数列的和为sum,可以直接用公式计算,但是公式计算个人感觉有一些复杂,觉得使用双指针更好一些,类似于TCP中的滑动窗口,根据窗口中的数值的和来确定窗口的位置和宽度,大了就向右缩小窗口,小了就向右扩大窗口,相等了就向右缩小一个位置,继续之前的比较。...原创 2019-06-13 17:36:28 · 286 阅读 · 0 评论 -
代换链表入口节点
题目:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1...原创 2019-05-29 21:41:20 · 297 阅读 · 0 评论 -
把数组排列成最小的数(详解)
题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。题目解析:看到这道题最直接的方法是先求出这个数组中所有数字的全排列,然后将每一种去安排列拼接,然后从拼接中找出最小的数,但是这样的效率明显较低,那么有咩有高效的方法呢?当然有,就是定义一个排序的规则。要定义一个排...原创 2019-06-06 10:03:53 · 4007 阅读 · 3 评论 -
复制带随机节点的链表
题目:给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。解题思路:这道题的一个难点就是链表中的随机指针,我能想到的就是在这个链表的每个节点后面都克隆一个相同的节点,然后让这两个链表断开连接,返回新链表就可以。思路图解:代码解析:Node* BuyNewNode(int data) { Node...原创 2019-05-30 20:25:48 · 274 阅读 · 0 评论 -
最低票价
题目:在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为 costs[0] 美元;一张为期七天的通行证售价为 costs[1] 美元;一张为期三十天的通行证售价为 costs[2] 美元。通行证允许数天无限制的旅行。...原创 2019-05-27 23:06:31 · 389 阅读 · 0 评论 -
不要二
题目解析:本题的重点是要读懂题意,并且需要多读两遍,才能读懂,本题本质就是在二维数组中每个坐标去放蛋糕,一个坐标位置放了蛋糕,跟他欧几里得距离为2的位置不能放蛋糕,这个就是关键点。对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为: ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根 。也就是说:如果(x1,y1)放了蛋糕,则满足 (...原创 2019-05-26 22:47:33 · 197 阅读 · 0 评论 -
排序子序列
题目解析:本题要求解的是排序子序列,排序子序列为非递增或者非递减,很多同学在这个非递增、非递减问题上很纠结,注意:非递减就是a[i]<=a[i+1],递减就是a[i]>a[i+1],非递增就是a[i]>=a[i+1],递增就是a[i]<a[i+1]。解题思路:通过上面理解了排序子序列,这个题的本质就是去找这里图里面的波峰和波谷。图解思路:...原创 2019-05-22 09:26:07 · 578 阅读 · 0 评论 -
组队竞赛
题目解析:队伍的水平值等于该队伍队员中第二高水平值,为了所有队伍的水平值总和最大的解法,也就是说每个队伍的第二个值是尽可能大的值。所以实际值把最大值放到最右边,最小是放到最左边。解题思路:本题的主要思路是贪心算法,贪心算法其实很简单,就是每次选值时都选当前能看到的局部最解忧,所以这里的贪心就是保证每组的第二个值取到能选择的最大值就可以,我们每次尽量取最大,但是最大的数不可能是中位数,所以退而...原创 2019-05-21 00:26:43 · 440 阅读 · 0 评论 -
幸运袋子(详解)
题目 一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的)。如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积。例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3 你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的。现在让你编...原创 2019-04-20 12:35:10 · 1179 阅读 · 0 评论 -
蘑菇阵(动态规划)
题目:现在有两个好友甲和B,住在一片长有蘑菇的由n * m个个方格组成的草地,A在(1,1),B在(N,M)。现在甲想要拜访B,由于她只想去乙的家,所以每次她只会走(I,J + 1)或第(i + 1,j)的这样的路线,在草地上有ķ个蘑菇种在格子里(多个蘑菇可能在同一方格),问:甲如果每一步随机选择的话(若她在边界上,则只有一种选择),那么她不碰到蘑菇走到乙的家的概率是多少?链接:https:/...原创 2019-04-18 18:01:04 · 584 阅读 · 0 评论 -
最长升序子串1231
题目与解析给定n个数字,在这n个数字中找出最长上升子序列。那么什么是上升子序列呢?上升子序列就是在一个数列中递增的部分,不一定是连续的,比如说图中的24678和24679都是数列24635798的上升子序列解题思路就按图上2 4 6 3 5 7 9 8 这个数列来说:我们定义dp[i]为以a[i]结尾的数列中的最长上升子序列的长度。前1个数 2前面没有数,所以dp(1) = 1...原创 2019-04-21 14:07:52 · 1259 阅读 · 0 评论 -
寻找两个有序数组的中位数(虚拟数组图文详解)
class Solution {public: double IsEmpty(vector<int>& num) { double ret; size_t size = num.size(); if(size == 1) return num...原创 2019-06-22 21:09:07 · 10987 阅读 · 2 评论