2024.03.12蓝桥云课笔记

最值查找

min和max函数

min(a,b)

max(a,b)

min({a,b,c,d})

max({a,b,c,d})

时间复杂度为O(n)

min_element与max_element

min_element(st,ed):返回地址[st,ed)中最小的那个值的地址(迭代器),传入参数为两个地址或迭代器

max_element(st,ed):返回地址[st,ed)中最大的那个值的地址(迭代器),传入参数为两个地址或迭代器

例:

vector<int> v= {24,9,1,5};

cout<<*min_element(v.begin(),v.end())<<endl;
nth_element

进行部分排序,返回值为void

传入参数为三个地址或者迭代器,第二个参数位置的元素将处于正确位置,其他元素随意,但左小右大。

例:

vector<int> v ={5,8,2,89,1,90,29};

nth_element(v.begin(),v.begin()+3,v.end());

for(auto &i :v)cout<<i<<' ';

例题:1.成绩分析 - 蓝桥云课 (lanqiao.cn)

题解:

#include <bits/stdc++.h>
using namespace std;
const int N=1e4+9;
int a[N];
int main()
{
  int n;
  
  cin>>n;
  for(int i=1;i<=n;++i)
  {
    cin>>a[i];
  }
  int max=*max_element(a+1,a+1+n);
  int min=*min_element(a+1,a+1+n);
  cout<<max<<endl;
  cout<<min<<endl;
  long long sum=0;
  for(int j=1;j<=n;j++){
    sum+=a[j];
  }
  cout<< fixed <<setprecision(2)<<1.0*sum/n<<endl;
  return 0;
}

二分查找

二分查找的前提

只能对单调递增获单调递减的数组进行操作

binary_search函数

通过二分查找算法来确定是否存在目标元素,返回值为bool

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    vector<int>v={2,6,1,8,10};
    int target = 5;
    bool found = binary_search(v.begin(),v.end(),target);
    if(found)
    {
        cout<<“存在”<<target;
    }
    else{
        cout<<"不存在"<<target;
    }
    return 0;
}
lower_bound和upper_bound

前提:数组必须为非降序,如果在非升序的数组中使用,可以通过修改比较函数实现(和sort类似)

lower_bound(st,ed,x):返回地址[st,ed)中第一个大于等于x的元素的地址

upper_bound(st,ed,x):返回地址[st,ed)中第一个大于x的元素的地址

#include<bits/stdc++.h>
using namespace std;
int main(){
    ios:sync_with_stdio(0),cin.tie(0),cout.tie(0);
    vector<int>v={5,8,1,5,13,89};
    sort(v.begin(),v.end());
    for(auto &i:v)
        cout<<i<<' ';
    cout<<endl;
    //找到数组中第一个大于等于8的元素的位置
    cout<<(lower_bound(v.begin(),v.end(),8)-v.begin())<<'\n';
    return 0;
}

例题:1.二分查找数组元素 - 蓝桥云课 (lanqiao.cn)

题解:

#include <bits/stdc++.h>
using namespace std;
int main()
{
  ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
      int target=0;
    cin>>target;
  int data[200];
  for(int i = 0 ; i < 200 ; i++)
  {
    data[i] = 4 * i + 6;
  }
  cout<<(lower_bound(data,data+200,target)-data)<<'\n';
  return 0;
}

大小写转换

islower/issupper函数

#include<cctype>

用于检查一个char字符是否为小写或者是大写字母,函数的返回值为bool类型。

tolower/toupper函数

tolower(A)->a

tolower(char ch)可以将ch转换成小写字母,如果不是大写字母不操作

toupper(char ch)可以将ch转换成大写字母,如果不是小写字母不操作

相关推荐

  1. 2024.03.12笔记

    2024-03-13 16:02:02       21 阅读
  2. 20240311

    2024-03-13 16:02:02       22 阅读
  3. 杯客观题练习笔记

    2024-03-13 16:02:02       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-13 16:02:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-13 16:02:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-13 16:02:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-13 16:02:02       20 阅读

热门阅读

  1. 【力扣二刷思路】DAY2

    2024-03-13 16:02:02       21 阅读
  2. Testing Library - About Queries

    2024-03-13 16:02:02       22 阅读
  3. js 判定一个string是否是正常的正则

    2024-03-13 16:02:02       20 阅读
  4. 面视题之——悲观锁和乐观锁

    2024-03-13 16:02:02       21 阅读
  5. HTTP协议相关面试知识

    2024-03-13 16:02:02       23 阅读
  6. MongoDB学习笔记

    2024-03-13 16:02:02       23 阅读