私はa = [13、20、7、4]の整数の配列を与えられ、私はdigitalsumandsort(a)= [20,4,13,7]関数を次のように記述しようとしています。 2つの数字の桁の和が同じ場合は、小さいほうが最初に来るはずです。 4と13は同じ桁の合計を持ちますが、どちらも存在する任意のデジタルソルソートソートでは、4は0 13よりも前になります。しかし、数字ではなく数字の合計だけを並べ替えることができます。ハッシュ関数はこの問題には完璧ですが、私は整数の配列を使ってこれを解決しようとしています。ここに私のコードがあり、どんな提案も大変ありがとうと思います。デジタル合計とソートの実装
std::vector<int> digitalsumandsort(std::vector<int> a) {
std::vector<int> result;
int sum=0;
int max=999;
int temp;
for (int i=0; i<a.size();i++){
temp=a[i];
while(temp>0){
sum+=temp%10;
temp/=10;
}
result.push_back(sum);
sum=0;
}
std::sort(result.begin(),result.begin()+4);
return result;
}
入力: :[13、20、7、4] 出力: [2、4、4、7] 期待出力: [20、4、13、7]
あなたは 'result'をソートして返します。 'result'には合計が含まれます。合計を集め、合計に応じて 'a'をソートし、ソートされた' a'を返します。デジタル和とソース番号の組を含む 'ベクトル 'を考えてみるか、デジタル和を計算してデジタル和に応じてソース番号をソートするカスタムコンパレータを指定してください。 –
user4581301