带你快速刷完67道剑指offer
如果你想在校招中顺利拿到更好的offer,阿秀建议你多看看前人的经验 ,比如准备 、简历 、实习 、上岸经历 、校招总结 、阿里、字节、腾讯、美团等一二线大厂真实面经 、也欢迎来一起参加秋招打卡活动 等;如果你是计算机小白,学习/转行/校招路上感到迷茫或者需要帮助,可以点此联系阿秀;免费分享阿秀个人学习计算机以来的收集到的好资源,点此白嫖;如果你需要《阿秀的学习笔记》网站中求职相关知识点的PDF版本的话,可以点此下载
如果你想在校招中顺利拿到更好的offer,阿秀建议你多看看前人的经验 ,比如准备 、简历 、实习 、上岸经历 、校招总结 、阿里、字节、腾讯、美团等一二线大厂真实面经 、也欢迎来一起参加秋招打卡活动 等;如果你是计算机小白,学习/转行/校招路上感到迷茫或者需要帮助,可以点此联系阿秀;免费分享阿秀个人学习计算机以来的收集到的好资源,点此白嫖;如果你需要《阿秀的学习笔记》网站中求职相关知识点的PDF版本的话,可以点此下载
# No33、第N个丑数
# 题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
# 示例1
输入
[3,32,321]
1
返回值
"321323"
1
# 1、三指针法 很经典
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];
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15