- 博客(3)
- 收藏
- 关注
原创 stl中的upper_bound和lower_bound
lower_bound:返回最小的大于等于key的位置 upper_bound:返回最大的小于等于key的位置 头文件:algorithm 注意:当使用lower_bound时key的值大于最大的值,查找到的位置是越界的(最大下标+1) 而当使用upper_bound的key的值小于最小的值,查找到的位置是第一个下标 格式:假设数组为a,长度为n,pos = lower_boun
2017-02-23 18:07:58
451
原创 最长上升子序列
最长上升子序列,众所周知,是dp的经典问题。用简单的dp解决的复杂度是O(n方),用dp+二分的方法解决的复杂度是O(nlogn). 1、转移方程: MaxLen (1) = 1 MaxLen (k) = Max { MaxLen (i):1 2、 假定存在一个序列d[1...9]=2 1 5 3 6 4 8 9 7,可以看出LIS长度为5。现在开始一步一步的找出
2017-02-23 14:33:07
272
原创 几种情况的二分写法
之前总是对二分的边界问题把握的不是很好,以致于出现死循环等问题。所以用这篇博文进行总结。 首先,本文所用算法均为左闭右闭的算法,且数组是以非递减顺序排列的。 1、查找是否存在关键值,如有相等的,则返回最左边的那个值的位置。否则,返回-1. 代码如下: int binary_search_1(int a[], int n, int key) { int m, l = 0, r =
2017-02-23 13:48:45
2537
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人