自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

穷理何须格物的博客

记录学习的点滴

  • 博客(13)
  • 资源 (1)
  • 收藏
  • 关注

原创 求累加和小于等于k的最大子矩阵

来自牛客网左程云第三课第二题问题:给定一个无序矩阵,其中有正,有负,有 0,再给定一个值 k,求累加和小于等于 k 的最大子矩阵大小,矩阵的大小用其中的元素个数来表示。分析:这个问题也是一个子矩阵问题,参看求子矩阵的最大和的分析,我们同样可以将其转换成子数组问题。本题的算法原型是未排序数组中累加和小于或等于给定值的最长子数组长度。解法:我们求出以每一行的为首行的子矩阵的列累加和,就是将

2016-08-20 09:59:25 1403

原创 求子矩阵的最大和

来自牛客网左程云第三课第一题问题:给定一个无序矩阵,其中有正,有负,有 0,求子矩阵的最大和。要求:时间复杂度O(N^3)分析:一个最直接的方法就是找到所有的子矩阵,然后遍历这些子矩阵并计算其累加和,找出最大的。矩阵将矩阵中的每一个点作为子矩阵的左上角,我们可以得到N*N的数量级的子矩阵数量。那么一共有N*N个点可以作为子矩阵的左上角,子矩阵的数量到达O(N^4)的数量级,我们在计算每

2016-08-19 22:25:42 3177

原创 未排序数组中累加和小于或等于给定值的最长子数组长度

问题: 给定一个无序数组 arr,其中元素可正、可负、可 0,给定一个整数 k。求 arr 所有的子数组中累加和小于或等于 k 的最长子数组长度。 例如:arr=[3,-2,-4,0,6],k=-2,相加和小于或等于-2 的最长子数组为 {3,-2,-4,0},所以结果返回 4。要求: 时间复杂度(N*logN)分析:这个问题和前一篇的问题很像,区别在于本题是小于或等于的。那么我们是否能用

2016-08-18 10:18:48 3415 3

原创 未排序数组中累加和为给定值的最长子数组系列问题

牛客网左程云第二课第三题,这是一个很重要的算法原型。问题:给定一个无序数组 arr,其中元素可正、可负、可 0,给定一个整数 k。求 arr 所有的子数组中累加和为 k 的最长子数组长度。 要求:时间复杂度 O(N)分析:本题和未排序正数数组中累加和为给定值的最长子数组长度这个问题的区别在于,数组中的数和给定的k值是任意整数,可以为正、负、零。上一个问题只能是整数。那么我们是否能用

2016-08-17 11:13:47 2412 5

原创 未排序正数数组中累加和为给定值的最长子数组长度

来自牛客网左程云算法第二课第二题问题: 给定一个数组 arr,该数组无序,但每个值均为正数,再给定一个正数 k。求 arr 的所有子数组中所有元素相加和为 k 的最长子数组长度。 例如,arr=[1,2,1,1,1],k=3。 累加和为 3 的最长子数组为[1,1,1],所以结果返回 3。 要求: 时间复杂度 O(N),额外空间复杂度 O(1)分析:我们最容易想到的解法还是暴力,暴力出

2016-08-16 10:10:46 1650 1

原创 数组中出现次数超过一半的数字

问题:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。分析:解题方法有很多,我们最容易想到的方法就是将数组中的数做个统计,计算每个数出现的次数,看看其中有没有超过数组中出现次数超过一半的数字。我们再深入分析一下,如果存在这样的一个数字

2016-08-15 15:08:57 1251

原创 求两个子数组最大的累加和

来自牛客网左程云算法第二堂课第一题问题:给定一个数组,其中当然有很多的子数组,在所有两个子数组的组合中,找到相加和最大的一组,要求两个子数组无重合的部分。最后返回累加和。 要求: 时间复杂度达到 O(N)解法:这道题的算法原型就是子数组的zui'da

2016-08-15 10:30:23 1609

原创 leetcode 53. Maximum Subarray 子数组最大和

问题:给定一个数组,其中当然有很多的子数组,在所有子数组中,找到相加和最大的一组,最后返回累加和。 要求: 时间复杂度达到 O(N)分析:这道题我们最容易想到的解法就是遍历数组,以每个元素作为子数组的首元素进行一次遍历,找出以该元素为首的子数组的累加和,找出其中最大的。需要进行(N+1)*N/2,时间复杂度为O(N*N)级别。如何能够使时间复杂度达到O(N)级别呢?下面开始我们的解法。

2016-08-15 07:48:22 1208

原创 leetcode11. Container With Most Water两根柱子围成最大面积

牛客网第一课第三题问题:给定一个非负数的数组,数组中的每个值代表一个柱子的高度,柱子的宽度是1。两个柱子之间可以围成一个面积,规定:面积=两根柱子的最小值*两根柱子之间的距离。例子:数 组[3,4,2,5]。3和4之间围成的面积为0,因为两个柱子是相邻的,中间没有距离。3和 2之间围成的面积为2,因为两个柱子的距离为1,且2是最短的柱子,所以面积=1*2。3和5之间围成的面积为6,因为两个

2016-08-13 16:16:55 873 1

原创 leetcode 42. Trapping Rain Water

牛客网第一课的第二题问题:.给定一个非负数的数组,代表一个容器。例如数组[0,1,0,2,1,0,1,3,2,1,2,1],就是以下图形中黑色的部分。如果用这个容器接水的话,请问可以接多少水?还以这个数组为例, 可以接6格水,就是以下图形中蓝色的部分。 要求:实现时间复杂度O(N),额外空间复杂度O(1)的解法。比较朴素的想法就是我们把数组中的数当作容器壁,求出各个容器壁之间可以存多少

2016-08-12 22:02:48 357

原创 leetcode 354 Russian Doll Envelopes 二元组最长递增子序列

最近在牛客网听左神讲课,在此记录一下。题目是leetcode 354. Russian Doll Envelopes问题:给定一个N*2的二维数组,看作是一个个二元组,例如[[a1,b1],[a2,b2],[a3,b3]], 规定:一个如果想把二元组甲放在二元组乙上,甲中的a值必须大于乙中的a值,甲中的b 值必须大于乙中的b值。如果在二维数组中随意选择二元组,请问二元组最多可以往上摞几个?

2016-08-11 20:03:33 1025

原创 最长递增子序列

问题描述:给定一个数组a[a1,a2,a2......an],求它的最长递增的子数组长度。最朴素的思想:求出以数组中每一个位置结尾的的最长递增子序列,选择其中的最大值,时间复杂度为O(n*n)。现在有一种更巧妙的思想可以将时间复杂度变为O(n*logn),一看到logn我们很容易想到二分,使用二分的前提条件是有序,那么如何能够达到有序呢?最长递增子序列O(n*logn)解法:首先开一个

2016-08-01 10:00:19 490

原创 状态选择器selector

在开发中,经常要对某一个控件的不同状态更换背景图片。例如:一个按钮按下的时候给它一个按下的效果,抬起按钮状态变回原来的样式。这时候我们可以用一个selector来实现。在我的Android学习 游戏开发之打地鼠(二,游戏设计和主界面设计)这篇博文中有如下一段代码: /** * 设置按钮按下和抬起的效果 */ @Override public boolean onTouch(V

2016-08-01 07:59:50 490

安卓打地鼠

安卓版打地鼠,使用eclipse开发。开发文章参考http://blog.csdn.net/qq_31010431/article/details/51232193,如有问题可以与我联系,我的邮箱1225503962@qq.com。

2017-06-29

空空如也

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

TA关注的人

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