剑指Offer53-I.在排序数组中查找数字I
写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点
1. 遍历
- 思路就是要把数字的比较转化为字符串的比较,因为明显字符越小放在前面越好,但是有种特例,例如30,3,所以我们把
class Solution {
public:
string minNumber(vector<int>& nums) {
vector<string>strs;//定义容器字符串类型
string ans;//定义字符串变量
for(int i = 0; i < nums.size(); i ++){
strs.push_back(to_string(nums[i]));//to_string 函数
}
sort(strs.begin(), strs.end(), compare);//end这个地方总是忘记
for(int i = 0; i < strs.size(); i++)
ans += strs[i];
return ans;
}
static bool compare(string s1,string s2)
{
return s1+s2<s2+s1;//传入参数的顺序,和大于号,小于号都会影响结果,如果满足条件,return为真,那么把第一个参数放在前面
}
};
知识点
时间复杂度/空间复杂度分析
- 时间复杂度:使用sort快排函数时间复杂度为O(nlogn)
- 空间复杂度: 空间复杂度为n,字符串容器