LeeCode刷题总结(四)

LeeCode刷题总结(四)

前言
用leecode题目练手,练习编码的感觉。先从简单题开始,刷完后和知识点结合总结。
先刷简单题,对遇到的问题类型和不知道的知识点先列举。有空闲时间继续归类到《算法总结》。

经过LeeCode刷题总结(一)的c++语法和基本数据结构的掌握后,对简单的元算法,题目的考察点不在元算就用标准库函数的泛型算法解决。默认是支持的。
例子来自与《C++ primer第六版》


只读算法

//对vec中的元素求和,初始值为0
int sum=accumulate(vec.cbegin(),vec.cend(),0)

对于支持+符合运算都是可以的,但是参数3需要是该类型可以往上累计。

//rosters中的元素至少和roster1的元素一样多,这点由程序员保证。
equal(roster1.cbegin(),roster1.cend(),roster2.cbegin());

写容器算法

fill算法

//输入范围的每个元素赋值
fill(vec.begin(),vec.end(),0);
//程序员应该保证vec至少有第二个参数的长度,fill_n不检测
fill_n(vec.begin(),vec.size(),10);

copy算法

auto ret = copy(a1.begin(),a1.end(),a2);

replace算法

//list中所有为0的元素换成43
replace(list.begin(),list.end(),0,43);
//源list不变拷贝一份ivec只是其中0元素替换成43
replace_copy(list.cbegin(),list.cend(),back_insert(ivec),0,43)

排序算法

//字典序排序,数字为从小到大
sort(words.begin(),words.end());
//unique重排范围每个元素只出现一次,返回不重复区域的后一个位置的迭代器
auto end_unique = unique(words.begin(),words.end());
//erase掉重复的元素,标准算法库不删除或增加容器的元素
words.erase(end_unique,word.end());

//按长度重新排序,长度相同的单词维持字典序
stable_sort(words.begin(),words.end(),isShorter);
//isShorter是向算法传递的函数用来比较的串长度,叫一元谓词。
posted @ 2021-03-31 08:56  wuya178  阅读(66)  评论(0)    收藏  举报