60291253去掉三个数字最小的数是?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了60291253去掉三个数字最小的数是?相关的知识,希望对你有一定的参考价值。
60291253去掉三个数字最小的数是(60212)思路分析:要保证数字有意义,首位数字不能为0,6必须保留;要让留下的数字最小,就要去掉除了首位数6以外最大的3个数字9、5、3,所以答案为60212。 参考技术A 60291253去掉三个数字最小的数是1。 参考技术B 你要把数字从小到大排列,
0.1.2.2.3.5.6.9
去掉3个大的
得到0.1.2.2.3
但是0不能放第一个
所以应该是10223 参考技术C 如果按照前后顺序去掉的话应该去掉629。剩下01253。读数是1253. 1253应该是最小的数了。 参考技术D 去掉三个数,挑最大去掉分别是695
剩下02123
最小的是10223
把数组排成最小的数
把数组排成最小的数
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
Input: [3,32,321]
Output : “321323”
class Solution {
public:
//自定义一个比较大小的函数,比较两个字符串s1, s2大小的时候,先将它们拼接起来,比较s1+s2,和s2+s1那个大,如果s1+s2大,那说明s2应该放前面
bool isSmaller(string s1, string s2)
{
for(int i=0; i<s1.length(); ++i)
{
if(s1[i]<s2[i])
return true;
else if(s1[i]>s2[i])
return false;
}
return true;
}
string PrintMinNumber(vector<int> numbers) {
if(numbers.size()==0)
return "";
vector<string> strVec;
string res;
for(int i=0; i<numbers.size(); ++i) //先int转化为string
{
string str = to_string(numbers[i]);
strVec.push_back(str);
}
for(int i=0; i<strVec.size(); ++i)
{
for(int j=i+1; j<strVec.size(); ++j)
{
string sum1 = strVec[i] + strVec[j];
string sum2 = strVec[j] + strVec[i];
if(!isSmaller(sum1, sum2)) //根据自定义规则调整顺序
{
string temp = strVec[i];
strVec[i].resize(strVec[j].size());
strVec[i] = strVec[j];
strVec[j] = temp;
}
}
res += strVec[i]; //比较一轮后,i位置即为最小元素
}
return res;
}
};
以上是关于60291253去掉三个数字最小的数是?的主要内容,如果未能解决你的问题,请参考以下文章