1、在循环里(for循环)建议不要直接用i < strlen(str),最好用int len =strlen( str );i < len;这样可以节省时间,也许这点时间就会使代码不会超时(遇到过,一直接使用的就TLE的)。
2、lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。
在从小到大的排序数组中,
lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。
upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。
3、STL之min_element()与max_element()(取容器中的最大最小值)
min_element()和max_element
头文件:#include< algorithm>
作用:返回容器中最小值和最大值。max_element(first,end,cmp);其中cmp为可选择参数。
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a<b;
}
int main()
{
int num[]={2,3,1,6,4,5};
cout<<"最小值是 "<<*min_element(num,num+6)<<endl;
cout<<"最大值是 "<<*max_element(num,num+6)<<endl;
cout<<"最小值是 "<<*min_element(num,num+6,cmp)<<endl;
cout<<"最大值是 "<<*max_element(num,num+6,cmp)<<endl;
return 0;
}
//最小值是 1
//最大值是 6
//最小值是 1
//最大值是 6