【发布时间】:2016-05-06 20:36:40
【问题描述】:
我得到一个 = [13, 20, 7, 4] 整数数组,我正在尝试编写如图所示的 digitalsumandsort(a) = [20, 4, 13, 7] 函数。如果两个数字具有相同的数字总和,则较小的数字(在常规意义上)应该排在第一位。 4 和 13 具有相同的数字总和,但是 4
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。考虑一个vector<pair<int,int>,它包含数字和和源编号对,或者指定一个自定义比较器来动态计算数字和,然后根据数字和对源编号进行排序。
标签: c++ algorithm sorting c++11 data-structures