如何减少此代码中的内存使用量
How can i reduce the memory usage in this code?
完整的问题在这里https://www.interviewbit.com/problems/random-attendance/。如果我不被允许在这里问这些问题,请告诉我。我认为我的解决方案是正确的,对于所提供的示例,我得到了预期的结果,但内存超出了错误。
bool compare (string a, string b){
return lexicographical_compare(a.begin(), a.end(), b.begin(), b.end());
}
vector<int> Solution::solve(int A, vector<int> &B) {
vector <string> x;
for(int i=0; i<A; i++){
x.push_back(to_string(i+1));
}
sort(x.begin(), x.end(), compare);
vector <int> ans;
for(int i=0; i<B.size(); i++){
ans.push_back(stoi(x[B[i]-1]));
}
return ans;
}
我只需要编写一个函数,将B[I]转换为给定A的正确值,可能会使用从A派生的额外预处理数据,从而加快/简化计算。预处理的数据应该是大约(log_10A)个整数,即最多10或20个整数。肯定不是。A刺痛。
当A很大时,您提出的解决方案失败得很惨,但对于任何A,都可以编写以O(B)运行的代码(只要A是int或long,对于任意大的A,实际速度可能应该是O(B log log A))。
作为提示,我将给您举一个例子。假设A=392908。
我们有一些B[0],我们想确定它的索引。
第一个数字是什么?是1还是2?可能是3点还是4点?一个人怎么能说出来。
事实上,有111111个索引以1开头,与2相同,而有11111个incide以4开头(与5、6、7、8、9相同)。
而剩余的数量(A-2*111111+6*111111)是用于数字3。使用这些信息不难确定B[0]索引中的第一个数字。
休息可以通过类似的程序来确定。
相关文章:
- 应用程序内存使用量减少
- 减少 g++ 内存使用量
- 如何使用 gcc 通过命令行限制C++代码的内存使用量?
- 如何在 ubuntu 上的 php 脚本中获取程序(c,c++,java,python,php)的执行时间和内存使用量?
- ActiveMQ使用者的内存使用量在onMessage调用后不断增加
- 使用 valgrind 的地块测量 c++ 应用程序的最大内存使用量(堆栈和堆)
- C 获得运行时间和内存使用量
- 使用大长度缓冲区初始化字符串流是否会使内存使用量加倍
- 使用OpenCL,如何获取GPU内存使用量
- 测量函数调用期间的最大内存使用量
- 内存使用量与数据大小相同
- 如何减少此代码中的内存使用量
- 对象大型数组的内存使用量极大
- 我应该使用哪种 c++11 范例来最小化内存使用量并最小化复制?
- 最大化内存使用量
- 使用 boost::asio SSL 服务器减少每个连接的内存使用量
- 当使用动态数组时,循环中的内存使用量不断增加.(C++)
- 随着C++程序的运行,内存使用量不断增加
- 直接索引访问与"high"内存使用量相比的理论影响是什么? "shifted"使用"low"内存使用情况的索引访问?
- Solaris 进程内存使用量会增加,但不会永远增加