Coding:从给定数字集中找到最大的数字
生活随笔
收集整理的這篇文章主要介紹了
Coding:从给定数字集中找到最大的数字
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
描述
從給定數字集中找到最大的數字,這些數字應以任何順序相互附加以形成最大的數字。
比如:
輸入: {10,68,75,7,21,12}
輸出: 77568211210
分析
這個題不能簡單的將數組降序排列然后進行組合,排序后變成 {75,68,21,12,10,7} 組合成數字就不是最大數。
思路:實現自定義比較器函數,對于兩個數字x和y,將其轉換成字符串,然后組合起來將 xy和yx進行比較,然后較大的數字將按順序排在最前面。
比如:對于 x=10 y=68,xy = 1068,yx=6810 ,然后比較這兩個數大小。
代碼:
#include <iostream> #include <vector> #include <algorithm> #include <string>using namespace std;struct{bool operator()(const int &a,const int &b){auto strA = to_string(a);auto strB = to_string(b);return (strA+strB) > (strB+strA);} }cusCompare;int main() {vector<int> numbers = {10,68,75,7,21,12};std::sort(numbers.begin(),numbers.end(),cusCompare);for(const auto &iter : numbers){cout << iter;}cout << endl;return 0; }總結
以上是生活随笔為你收集整理的Coding:从给定数字集中找到最大的数字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++11:forward及完美转发
- 下一篇: Coding:在数组中查找具有给定总和的