小米13筆試編程題 1

來源:互聯網
上載者:User

標籤:style   blog   java   color   os   io   for   div   

數組乘積(15分)
輸入:一個長度為n的整數數組input
輸出:一個長度為n的整數數組result,滿足result[i] = input數組中除了input[i]之外所有數的乘積(假設不會溢出)。比如輸入:input ={2,3,4,5},輸出result = {60,40,30,24}
程式時間和空間複雜度越小越好。
C/C++:
int *cal(int* input , int n);

Java:
int[] cal(int[] input);

方法1:算出數組所有元素乘積sum,再逐個除以對應元素sum/input[i],如下

#include<iostream>using namespace std;    int *cal(int* input , int n){    int sum=1;    int *result=new int[n];    for(int i=0;i<n;i++){        sum=sum*input[i];    }    cout<<sum<<endl;    for(int j=0;j<n;j++){       result[j]=sum/input[j];    }    return  result;}    int main(){    int input[]={2,3,4,5};    int L=sizeof(input)/sizeof(input[0]);//計算數組長度    int *re=cal(input,L);    cout<<re[0]<<re[1]<<re[2]<<re[3]<<endl;//字元數組可直接輸出數組名,其他的輸出地址}

 

方法2:得出數組中該元素之前所有元素乘積,再用迴圈實現,對於輸入2,3,4,5 即先得到5,2,2*3,2*3*4(最後一個元素置首位),再從元素末尾的前一個元素開始計算(原理是用該元素前面所有元素乘積,再乘以該元素後面所有元素乘積)。

#include<iostream>using namespace std;int *cal(int* input , int n)      {          int i ;          int *result = new int[n];          result[0] = 1;          for(i = 1 ; i < n ; ++i)              result[i] = result[i-1]*input[i-1];          result[0] = input[n-1];  for(i = n-2 ; i > 0 ; --i)          {              result[i] *= result[0];  //reslut[i]中存的是當前元素前面所有的乘積;result[0]是當前元素後面所有的乘積,將二者相乘即可            result[0] *= input[i];          }          return result;      }  int main(){    int input[]={2,3,4,5};    int L=sizeof(input)/sizeof(input[0]);//計算數組長度    int *re=cal(input,L);    cout<<re[0]<<re[1]<<re[2]<<re[3]<<endl;//字元數組可直接輸出數組名,其他的輸出地址}
reslut[i]中存的是當前元素前面所有的乘積;result[0]是當前元素後面所有的乘積,將二者相乘即可

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.