关注
数组排序的常规做法就是定义个比较函数然后传进排序函数: #include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char* argv[]) {
vector<int> nums = {2, 3, 5, 7, 11, 13, 15, 17};
sort(nums.begin(), nums.end(), [](int x, int y) {
int units_x = x % 10;
int units_y = y % 10;
if (units_x == units_y) return x < y;
return units_x < units_y;
});
for (int x : nums) cout << x << " ";
cout << endl;
return 0;
}不过这里个位数的值只有0-9一共10种,所以像楼上一样分到10个vector中排序,然后依次汇总应该才是题目想要的做法,毕竟给定的数组是有序的,这个条件在之前的代码里没利用: #include <assert.h>
#include <algorithm>
#include <array>
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char* argv[]) {
// nums为有序数组
vector<int> nums = {2, 3, 5, 7, 11, 13, 15, 17};
array<vector<int>, 10> buckets;
// TODO: use array<forward_list, 10> may be better?
for (int x : nums) buckets[x % 10].emplace_back(x);
size_t index = 0;
for (const auto& v : buckets) {
for (int x : v) {
assert(index < nums.size());
nums[index++] = x;
}
}
for (int x : nums) cout << x << " ";
cout << endl;
return 0;
}
查看原帖
点赞 11
相关推荐
牛客热帖
更多
正在热议
更多
# 实习生的蛐蛐区 #
983665次浏览 4933人参与
# 父母对你找工作是助力还是阻力? #
50046次浏览 424人参与
# 27届实习投递记录 #
154582次浏览 1600人参与
# 你上一次给父母打电话是什么时候 #
45727次浏览 281人参与
# 万物皆可发面经 #
1498次浏览 21人参与
# 找工作时的取与舍 #
139502次浏览 927人参与
# 从mentor身上学到了__ #
66349次浏览 914人参与
# 我和mentor的爱恨情仇 #
120179次浏览 1011人参与
# 你觉得mentor喜欢什么样的实习生 #
62614次浏览 1052人参与
# 你的mentor是什么样的人? #
65284次浏览 811人参与
# 实习,不懂就问 #
223629次浏览 1732人参与
# 多益网络工作体验 #
74594次浏览 316人参与
# 多益网络求职进展汇总 #
109471次浏览 409人参与
# 如何一边实习一边找下家? #
131908次浏览 648人参与
# 一起聊华为 #
222123次浏览 973人参与
# 求职中的尴尬瞬间 #
42780次浏览 127人参与
# 薪资一样,你会选择去大厂还是小公司 #
36040次浏览 133人参与
# 实习的内耗时刻 #
243358次浏览 1670人参与
# 发工资后,你做的第一件事是什么 #
108163次浏览 348人参与
# 第一次找实习,我建议__ #
88540次浏览 885人参与
查看4道真题和解析