摘要:
一、二分查找介绍 首先使用二分法的前提是这个数组或者序列是排好序的。对于一个排好序的数组(升序),如果要让我们从中找一个指定的数并输出它的下标,我们可以直接暴力枚举,时间复杂度为O(n),当我们使用二分查找的时候它的时间复杂度为O(log n) 二分法的核心思想就是:每次都将查询的范围缩小一半 还是 阅读全文
摘要:
一、双指针介绍 一般来说是使用两个指针(大多数情况是使用的两个变量)来对一个对象进行处理,两个指针指向不同的元素,然后进行比较从而解决问题 可以用于优化暴力算法的时间复杂度 例如:给你一个已近排好序的数组v,现在需要你删除数组中的重复元素,并输出删除后的数组的长度 当然你可以的直接使用unique直 阅读全文
摘要:
一、适用场景 对于一个数组,要做多次判断条件相同的处理 二、核心思想 一般分为外层循环和内层循环,两个循环用于处理不同的事情 1.外层循环用于做准备工作和内层循环后的统计工作(例如求最大值) 2.内层循环用于遍历数组 时间复杂度为O(n),因为中间的变量 " i " 是一直在加,没有减小过 模板: 阅读全文
摘要:
一、lambda语句介绍 在cppreference中对lambda的解释是:一个能够捕获作用域中变量的未命名函数对象 个人认为就是一个用于快速定义一个匿名函数的语句 使用格式 1.capture子句,lambda的核心,通过改变[ ]中的值,来设定捕获的范围 2.参数列表 ,可选,用于确定捕获参数 阅读全文
摘要:
一、function介绍 funciotn是从c++11开始支持的特性,使用它需要包含<functional>头文件 在cppreference中解释为:类模板std::function是一个通用的多态函数包装器。std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作 阅读全文