- 实现大数乘法
- array & vector & 数组
- 为什么有vector还需要array,array有什么vector没有的优点(数据存在堆还是栈)
- 为什么有普通数组还需要array,array有什么普通数组没有的优点(size())
- map & unordered_map
- 各自优缺点,使用场景,crud复杂度
- 快速排序复杂度
- 最好情况 nlogn
- 平均情况 nlogn
- 最坏情况 n^2
- 多线程
- linux 怎么创建线程 pthread_create(),各参数含义
- 线程数据结构有哪些内容(面试官想问的事可以在线程里存任务的阻塞队列异步唤醒)
- 怎么唤醒阻塞的线程(互斥量,条件变量)
- 阻塞队列(面试官提示可以用这个存放任务)
- 锁
- 锁有哪些类型
- 无锁队列
// 将两个大数相乘,每个大数用字符串表示
std::string bigNumberMultiply(const std::string &num1, const std::string &num2) {
int len1 = num1.size();
int len2 = num2.size();
std::vector<int> result(len1 + len2, 0);
// 逆序处理每个字符,因为乘法是从低位开始计算
for (int i = len1 - 1; i >= 0; i--) {
for (int j = len2 - 1; j >= 0; j--) {
int mul = (num1[i] - '0') * (num2[j] - '0');
int sum = mul + result[i + j + 1];
// 累加到结果中并处理进位
result[i + j + 1] = sum % 10;
result[i + j] += sum / 10;
}
}
// 转换结果为字符串
std::string resultStr;
for (int num : result) {
// 跳过前导0
if (!(resultStr.empty() && num == 0)) {
resultStr.push_back(num + '0');
}
}
return resultStr.empty() ? "0" : resultStr;
}