面试OR笔试45——实现next_permutation
来源:互联网 发布:趋势操盘软件 编辑:程序博客网 时间:2024/05/20 07:20
1 题目及要求
1.1 题目描述
实现next_permutation()函数。
2 解答
2.1 代码
template<typename It>bool next_permutation_m(It beg, It end) {if (!(beg < end)) return false;const auto rbeg{ reverse_iterator<It>(end) }, rend{ reverse_iterator<It>(beg) };auto it1(next(rbeg));while (!(it1 == rend || *it1 < *prev(it1))) ++it1;if (it1 == rend) {reverse(rbeg, rend);return false;}auto it2{ rbeg };while (!(*it1 < *it2)) ++it2;swap(*it1, *it2);// 上面三行等价写法//swap(*find_if(rbeg, it1, bind1st(less<iterator_traits<It>::value_type>(), *it1)),*it1);reverse(rbeg, it1);return true;}template<typename It>bool next_permutation_m1(It beg, It end) {if (!(beg < end)) return false;auto it1(end - 1);while (!(it1 == beg || *(it1 - 1) < *it1)) --it1;if (it1 == beg) {reverse(beg, end);return false;}--it1;auto it2(end-1);while (!(*it1 < *it2)) --it2;swap(*it1, *it2);reverse(it1+1,end);return true;}
阅读全文
0 0
- 数据结构---04-树7 二叉搜索树的操作集(30 分)
- leetcode之Add Two Numbers 在VS上面提交通过,放到网站上提交有问题;
- 双节快乐
- QBXT DAY 2 笔记
- Linux内存管理之页面回收
- 面试OR笔试45——实现next_permutation
- 计算机系统概述-程序开发和执行过程简介
- java中生成pdf,插入图片,页眉、页脚、表格
- CF 71C Round Table Knights 暴力
- hdu4081-次小生成树&MST变形&模板-Qin Shi Huang's National Road System
- bzoj4668 冷战 (并查集按秩合并)
- C++单例模式
- JVM (PART IX) 内存分配与回收策略
- NIO