自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 不同的路径 II-LintCode

描述: “不同的路径” 的跟进问题: 现在考虑网格中有障碍物,那样将会有多少条不同的路径? 网格中的障碍和空位置分别用 1 和 0 来表示。 注意事项:m 和 n 均不超过100样例: 如下所示在3x3的网格中有一个障碍物: [ [0,0,0], [0,1,0], [0,0,0] ] 一共有2条不同的路径从左上角到右下角。思路: 与不同路径思路大体相同,不过需要添

2017-10-29 23:02:18 302

原创 不同路径-LintCode

描述: 有一个机器人的位于一个 m × n 个网格左上角。 机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角。 问有多少条不同的路径? 注意事项:n和m均不超过100样例: 给出 m = 3 和 n = 3, 返回 6. 给出 m = 4 和 n = 5, 返回 35.思路: 建立二维数组,表示第i行第j列的路径个数,f[i][j]=f[i-1][j]+f[i][j-

2017-10-29 22:55:41 193

原创 数字三角形-LintCode

描述: 给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。 注意事项:如果你只用额外空间复杂度O(n)的条件下完成可以获得加分,其中n是数字三角形的总行数。样例:比如,给出下列数字三角形:[ [2], [3,4], [6,5,7],[4,1,8,3]] 从顶到底部的最小路径和为11 ( 2 + 3 + 5 + 1 = 11)。思路: 通过思

2017-10-29 22:44:50 275

原创 栅栏染色-LintCode

描述: 我们有一个栅栏,它有n个柱子,现在要给柱子染色,有k种颜色可以染。 必须保证不存在超过2个相邻的柱子颜色相同,求有多少种染色方案。 注意事项:n和k都是非负整数样例: n = 3, k = 2, return 6 post1, post2, post3way1 0, 0, 1 way2 0, 1,

2017-10-29 22:11:03 307

原创 最小路径和-LintCode

描述: 给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径。 注意事项:你在同一时间只能向下或者向右移动一步。思路: 建立一个二维数组 ,f[i][j]用来表示以A[i][j]为终点时的最小路径,对于每一个A[i][j]来说,能走到它的方法有两种,即从A[i-1][j]到A[i][j]或者从A[i][j-1]到A[i][j],我们取和较小的赋值给f[i][j];

2017-10-29 21:39:28 252

原创 最长上升连续子序列-LintCode

描述: 给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。) 注意事项:time样例: 给定 [5, 4, 2, 1, 3], 其最长上升连续子序列(LICS)为 [5, 4, 2, 1], 返回 4. 给定 [5, 1, 2, 3, 4], 其最长上升连续子序列(LICS)为 [

2017-10-29 21:26:17 363

原创 爬楼梯-LintCode

描述: 假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?样例: 比如n=3,1+1+1=1+2=2+1=3,共有3种不同的方法 返回 3思路: 这个题显然用动态规划比较好处理,设爬到第n层楼梯,它的爬法与它的前两层爬法有关,即可以由n-2层爬两层或由n-1层爬一层。 即f(n)=f(n-1)+f(n-2) 这里我们用记忆搜索的方式来

2017-10-29 20:44:41 222

原创 验证二叉查找树—LintCode

描述: 给定一个二叉树,判断它是否是合法的二叉查找树(BST)一棵BST定义为:节点的左子树中的值要严格小于该节点的值。 节点的右子树中的值要严格大于该节点的值。 左右子树也必须是二叉查找树。 一个节点的树也是二叉查找树。ac代码:/** * Definition of TreeNode: * class TreeNode { * public: * int val; *

2017-10-12 17:22:15 211

原创 快速幂—LintCode

描述: 计算a^n % b,其中a,b和n都是32位的整数。样例: 例如 2^31 % 3 = 2例如 100^1000 % 1000 = 0思路:二分求幂。ac代码:class Solution {public: /* * @param a, b, n: 32bit integers * @return: An integer */ int m

2017-10-12 17:21:04 186

原创 最大间距—LintCode

描述: 给定一个未经排序的数组,请找出其排序表中连续两个要素的最大间距。如果数组中的要素少于 2 个,请返回 0.样例: 给定数组 [1, 9, 2, 5],其排序表为 [1, 2, 5, 9],其最大的间距是在 5 和 9 之间,= 4.思路:利用sort对数组进行排序。 找出最大的间距即可。ac代码:class Solution {public: /** * @para

2017-10-12 17:14:24 257

原创 寻找缺失的数—LintCode

描述: 给出一个包含 0 .. N 中 N 个数的序列,找出0 .. N 中没有出现在序列中的那个数。样例: N = 4 且序列为 [0, 1, 3] 时,缺失的数为2。思路:首先对数组进行排序。 再判断nums[i]是否等于i。 不等于即缺少的数为i。ac代码:class Solution {public: /** * @param nums: a vector

2017-10-12 17:11:39 216

原创 硬币排成线—LintCode

描述: 有 n 个硬币排成一条线。两个参赛者轮流从右边依次拿走 1 或 2 个硬币,直到没有硬币为止。拿到最后一枚硬币的人获胜。样例: n = 1, 返回 true.n = 2, 返回 true.n = 3, 返回 false.n = 4, 返回 true.n = 5, 返回 true.思路:博弈。 为3的倍数必胜。ac代码:class Solution {public: /**

2017-10-12 17:09:35 284

原创 买卖股票的最佳时机 —LintCode

描述: 假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。样例: 给出一个数组样例 [3,2,3,1,2], 返回 1 思路:当我们遍历到第i天的时候,我们需要知道前i-1天的最小值。那么就可得出在第i天卖出股票的利润,每一步更新利润的最大值即可。ac代码:class Solution {public:

2017-10-12 17:08:06 232

原创 落单的数—LintCode

描述: 给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。样例: 给出 [1,2,2,1,3,4,3],返回 4思路:从头开始遍历数组,遍历到没有被标记的数时,就遍历后面的数组找到与这个数相同的标记上。最后没有被标记的数就是答案。也可以将所有的数按位异或,最后的值即为答案。ac代码1:class Solution {public: /* *

2017-10-12 17:00:42 469

原创 最小子数组—LintCode

描述: 给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。样例: 给出数组[1, -1, -2, 1],返回 -3思路: 和最大数组思路一致。ac代码:class Solution {public: /* * @param nums: a list of integers * @return: A integer indicate the sum of

2017-10-12 16:54:39 201

原创 最大子数组—Lintcode

描述: 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。样例: 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6思路:从头开始遍历,每次添加新元素进行两步操作: 1.比较maxx与sum的大小,使maxx始终为最大的值。 2.判断sum的大小,如果sum小于0,就将sum的值置为0;也就是说舍去前面所有的元素,重新选择子

2017-10-12 16:52:31 165

原创 主元素-LintCode

描述: 给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。样例: 给出数组[1,1,1,1,2,2,2],返回 1思路:创建一个数组a[i]=j; 代表i数字出现了j次。遍历一遍a数组,找出a数组中大于nums.size()/2的值即为答案。ac代码:class Solution {public: /* * @param nums: a li

2017-10-12 16:36:03 358

空空如也

空空如也

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

TA关注的人

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