关注
数组排序的常规做法就是定义个比较函数然后传进排序函数: #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
相关推荐
2025-12-26 00:57
门头沟学院 golang 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
13586次浏览 178人参与
# 机械人避雷的岗位/公司 #
44565次浏览 314人参与
# 论秋招对个人心气的改变 #
14685次浏览 200人参与
# 我的省钱小妙招 #
37509次浏览 446人参与
# 程序员找工作至少要刷多少题? #
22390次浏览 282人参与
# 工作前VS工作后,你的心态变化 #
38326次浏览 266人参与
# 为了减少AI幻觉,你注入过哪些设定? #
6812次浏览 191人参与
# 牛客AI体验站 #
8643次浏览 218人参与
# 你的mentor是什么样的人? #
51378次浏览 725人参与
# 你现在会用到哪些AI技能? #
24725次浏览 137人参与
# 找实习多的是你不知道的事 #
1788813次浏览 20670人参与
# 我现在比当时_,你想录用我吗 #
9837次浏览 133人参与
# 哪一瞬间让你觉得工作好累 #
75676次浏览 431人参与
# 12306一秒售罄,你抢到回家的票了吗? #
2488次浏览 52人参与
# 应届生进小公司有什么影响吗 #
118652次浏览 1161人参与
# 一张图晒一下你的AI员工 #
6103次浏览 134人参与
# AI Coding的使用心得 #
5787次浏览 119人参与
# 父母对你找工作是助力还是阻力? #
38382次浏览 387人参与
# 我和mentor的爱恨情仇 #
106495次浏览 952人参与
# 25年找工作是什么难度? #
53677次浏览 338人参与
