你有两个数组
int[] a = {......} // Total elements 1 million
int[] b = {......} // Total elements 1 million , Length is same for both arrays.
Q1。我必须创建一个数组
int[] c
其元素是 a[] 和 b [] 对应索引的总和。
c[0] = a[0] + b[0];
c[1] = a[1] + b[1];
c[2] = a[2] + b[2];
解决方案:-> 我可以利用多线程。将整个数组分成 10 个或更多部分,并将每个段分配给一个线程来执行计算。注意-> 面试官建议使用多线程
Q2。现在它有点改变了。数组 C 的元素将具有这样的值:->
c[0] = a[0] + b[0];
c[1] = a[1] + b[1] + c[0]; // At this line c[0] is Sum of a[0] + b[0]; The Above Line
c[2] = a[2] + b[2] + c[1]; // At this line c[0] is Sum of a[1] + b[1]+ a[0] + b[0]; The Above Line
MySolution-> Solve Part 1 (Q1) 并创建一个临时数组,然后我们必须像这样执行加法。
C[1] = temp[1]+temp[0]
C[2] = temp[2]+temp[1]
注意:-> 我们真的不需要 temp[],我们也只能使用 Array c 来做到这一点。只是为了以简单的方式在 SO 上解释这一点。
问题-> 我不认为在问题 2 中我们可以使用多线程。有没有更好的方法来解决 Q2 ?我们可以在这方面利用多线程吗?