1.问题描述 写一个高效的算法,从一个m×nm\times n的整数矩阵中查找出给定的值,矩阵具有如下特点:
每一行从左到右递增。
每一列从上到下递增。
2. 方法与思路2.1 二分查找法 根据矩阵的特征很容易想到二分法,但是这是一个二维的矩阵,如何将问题转化为一维是关键。实际上我们可以根据矩阵的第一列确定值可能所在的行的范围(limu,limd)(limu,limd),其中limu=0...
分类:
编程语言 时间:
2015-07-23 21:54:29
阅读次数:
114
在三个数组中各选一个数,判断相加是否能得到目标数。一开始想暴力发现impossible~联系到二分,经过学长指点才将前两个数组合并,将前两个数组所有可能的和保存在新数组中,再根据第三个数组,二分查找新数组以判断是否有所需的数#include"cstdio"#include"cstring"#incl...
分类:
其他好文 时间:
2015-07-23 17:13:40
阅读次数:
89
32位与64位
地址与内存的关系
4G = 4*1024M = 4*1024*1024k = 4*1024*1024*1024 Byte字节 = 2^32
32位,指针就是4个字节
#include
void main()
{
int num = 10;
printf("%p\n", &num);...
分类:
编程语言 时间:
2015-07-23 13:55:44
阅读次数:
104
OO’s Sequence
Time Limit: 4000/2000 MS (Java/Others) Memory
Limit: 131072/131072 K (Java/Others)
Total Submission(s): 955 Accepted Submission(s): 358
Problem Description
OO has got...
分类:
其他好文 时间:
2015-07-22 13:22:05
阅读次数:
226
题意:
问有多少区间段,最大小值差<k。
做法:
枚举右端点,很明显 区间越大,最大小值差越大,所以有线性关系。所以可以二分。找到差值小于k的点,这个点到右端点之间所有点都可以做为左端点。
线段树和树状数组都可能超时,离线最大小值计算最稳的就是RMQ了。...
分类:
其他好文 时间:
2015-07-21 22:19:18
阅读次数:
120
题目:把一个数组最开始的若干个元素搬到数据的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。这道题可以使用类似于二分查找的思想,算法思路如下:1.假设有一个旋转数组A,我们设两...
分类:
编程语言 时间:
2015-07-21 20:15:59
阅读次数:
148
引自:http://blog.csdn.net/int64ago/article/details/7425727int64Ago 看到这个标题无论你是处于怎样的心理进来看了,我觉得都是值得的。因为这个问题太简单,任何一个开始接触“真正”算法基本都是从二分查找开始的。至于二分查找都不知道是什么的可.....
分类:
其他好文 时间:
2015-07-21 16:51:47
阅读次数:
137
何为DEBUG?DEBUG,就是搜索BUG,让后把它DE了。...
分类:
编程语言 时间:
2015-07-21 14:50:56
阅读次数:
134
1、按先后顺序存储在A[i]中,查找需要O(n),如果用二分查找,需要O(logn)
2、定义一个一维数组A[1..1353],使得A[key]=key,这样,查找只需O(1)就可以了,但空间开销比较大
思考:有什么办法使得查找时间快,占用空间小
哈希表基本原理
哈希表的基本原理是使用一个下标范围比较大的数组A来存储元素,设计一个函数h,对于要存储的线性表的每个元素node,取一个...
分类:
其他好文 时间:
2015-07-20 19:47:24
阅读次数:
102
水题也要优化1.用两个数组单独记录下标的更新2.用STL中lower_bound来进行二分查找.要注意lower_bound的返回值意义 是大于等于val的第一个,所以返回值要进行判断才可以利用#include #include #include #include using namespace s...
分类:
编程语言 时间:
2015-07-20 18:56:06
阅读次数:
185