【发布时间】:2021-10-05 16:27:59
【问题描述】:
Input Array: int A={2,3,4,5,6} , array is not always sorted.
output Array:{2,1,1,0,2}
- 因为我们可以看到
A[0]可以除以 4 和 6,所以它有输出 2。 -
A[1]只能除6,输出1。 -
A[2]除以 2,所以有输出 1。 -
A[3]不能除或被除所以有输出0。 -
A[4]除以 2 和 3,所以输出为 2。
我能够使用时间复杂度为 o(n*n) 的蛮力方法来解决它。什么是解决它的最有效方法。谢谢。 我的代码:
#include<iostream>
#include<vector>
using namespace std;
//Function to return output vector
vector<int>solve(vector<int> &A) {
vector<int>v;
for(int i=0;i<A.size();i++){
int count=0;
for(int j=0;j<A.size();j++){
if(i!=j){
if(A[j]%A[i]==0 || A[i]%A[j]==0){
count++;
}
}
}
v.push_back(count);
}
return v;
}
int main(){
vector<int>v={2,3,4,5,6};
vector<int>s;
s=solve(v);
//printing the output array
for(int i=0;i<s.size();i++){
cout<<s[i]<<" ";
}
}
【问题讨论】:
-
不,它没有排序,第二个示例测试用例是无序的。
-
某种记忆或动态编程?由于您已经用
A[0]划分了所有其余数字,因此您不必再这样做了。 -
每个元素的选择范围是多少?
标签: c++ algorithm vector data-structures dynamic-programming