输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
输入
[3,32,321]
返回值
"321323"
1-6之间都是丑数 1 2 3 4 5 6 直接返回即可
维护三个index,采用三index齐头并进的做法。
int GetUglyNumber_Solution(int index) {
if(index < 7) return index;
vector<int> result(index, 0);
result[0] = 1;
int indexTwo = 0, indexThree = 0,indexFive = 0;
for (int i = 1; i < index; ++i) {
int minNum = min(min(result[indexTwo] * 2, result[indexThree] * 3), result[indexFive] * 5);
if (minNum == result[indexTwo] * 2) indexTwo++;
if (minNum == result[indexThree] * 3) indexThree++;
if (minNum == result[indexFive] * 5) indexFive++;
result[i] = minNum;
}
return result[index - 1];
}