题目
思路
- 思路1:先遍历一边数组,分别将字母日志和数字日志存入
vector<string>
中,然后将字母日志使用自定义排序进行排序,再将数字日志加入排序后的字母日志即可。 - 思路2:直接使用
stable_sort
进行自定义排序.
stable_sort
和 sort
的区别
sort
是快速排序实现,因此是不稳定的;stable_sort
是归并排序实现,因此是稳定的。(这里的稳定是指排序后相等元素的相对位置保持不变)- 对于相等的元素
sort
可能改变顺序,stable_sort
保证排序后相等的元素次序不变。 - 如果提供了比较函数,
sort
不要求比较函数的参数被限定为const
,而stable_sort
则要求参数被限定为const
,否则编译不能通过。
题解
1 | class Solution { |
- 时间复杂度:O(n \ log n),其中 n 为 logs* 的字符数,是平均情况下内置排序的时间复杂度。
- 空间复杂度:O(n),额外存放日志的数组
执行用时:16 ms, 在所有 C++ 提交中击败了23.57%的用户
内存消耗:12.4 MB, 在所有 C++ 提交中击败了31.52%的用户
通过测试用例:65 / 65
1 | class Solution { |
- 时间复杂度:O(n \ log n),其中 n 为 logs* 的字符数,是平均情况下内置排序的时间复杂度。
- 空间复杂度:O(n),额外存放日志的数组
执行用时:12 ms, 在所有 C++ 提交中击败了59.80%的用户
内存消耗:10.9 MB, 在所有 C++ 提交中击败了83.87%的用户
通过测试用例:65 / 65