د ځان څخه علاوه د صفونو محصول


مشکل کچه په اسانۍ سره
په مکرر ډول دننه پوښتل کیږي اکولایټ ترلاسه کړئ Amazon DE شا Morgan سټنلي اوپرا
پیشه ریاضی

ستونزه بیان

"د ځان پرته د سرنی محصول" ستونزه ، بیانوي چې تاسو ته یو سرنی درکړل شوی دی []. بل چاپ کړه سور د ورته اندازې p [] د ورته ارزښت لکه د I په شاخص کې د ar p p د اصلي سرې د ټولو عناصرو محصول سره مساوي دي پرته له دې چې په عنع کې په I کې شاخص کې عنصر.

بېلګه

د ځان څخه علاوه د صفونو محصول

a [ ] = {1, 2, 3}
{6, 3, 2}

توضیحي: له هغه وخته چې د صف اندازه 3 ده. که موږ دوهم او دریم عنصر ضرب کړو نو محصول یې 2 دی. په ورته ډول ، موږ دا د دوهم او دریمې شاخص عناصرو لپاره کوو. پدې توګه محصول {3 ، 6 ، 2 {دی.

a [ ] = {4, 6, 1, 2}
{12, 8, 48, 24}

د برخې میتود کارول

دا میتود یوازې په هغه حالت کې مؤثره دی چیرې چې ټول صفري عنصر تل د 0 څخه ډیر وي.

الګوریتم

1. Initialize an array a[] of size n.
2. Initialize a variable prod and store product of all the elements of the array a[] in it.
3. Create another array p[] to store products of all elements except self.
4. Traverse through array a[] and update the value of array p[] such that p[i] is equal to the division of a[i] and prod.
5. Print the array p[].

ستونزه حل کیدی شي که چیرې موږ د ټولو شمیرو محصول ذخیره کولو لپاره متغیر وکاروو (په صف کې عناصر ، ان پټ). بیا د هر عنصر لپاره ځواب موندل کیدی شي که چیرې موجوده عنصر له بشپړ ضرب (لکه د ټولو عناصرو محصول) څخه وویشئ.

کوډ

C ++ د ځان توکي سربیره د صفونو محصول لپاره برنامه

#include <bits/stdc++.h>
using namespace std;

void prodArray(int a[], int n){
    int p[n], prod=1;
    
    //Find product of all elements of a[]
    for(int i=0; i<n; i++){
        prod = prod * a[i];
    }
    
    //Create array p[] to store
    //product except self
    for(int i=0; i<n; i++){
        p[i] = prod / a[i];
    }
    
    for(int i=0; i<n; i++){
        cout<<p[i]<<" ";
    }
}

int main() {
  int a[] = {4, 6, 1, 2};
  int n = sizeof(a)/sizeof(a[0]);
  prodArray(a,n);
  return 0;
}
12 8 48 24

د صفونو پرته د صفونو محصول لپاره د جاوا برنامې

class product{
    
    void prodArray(int a[], int n){
        int p[] = new int[n], prod=1;
        
        //Find product of all elements of a[]
        for(int i=0; i<n; i++){
            prod = prod * a[i];
        }
        
        //Create array p[] to store
        //product except self
        for(int i=0; i<n; i++){
            p[i] = prod / a[i];
        }
        
        for(int i=0; i<n; i++){
            System.out.print(p[i] + " ");
        }
    }
    
    public static void main(String[] args){
        product pro = new product();
    	int a[] = {4, 6, 1, 2};
    	int n = a.length;
    	pro.prodArray(a,n);
    }
}
12 8 48 24

د پیچلتیا تحلیل

د وخت پیچلتیا

O (N) ، چیرې چې د عناصرو شمیر N دی. ځکه چې دلته لومړی موږ د صفونو له لارې تیر شو کوم چې د O (N) وخت کې الګوریتم چلوي.

د ځای پیچلتیا

O (1)، ځکه چې موږ دوامداره اضافي ځای کارولی. مګر برنامه په بشپړ ډول د O (N) ځای نیسي ځکه چې موږ ان پټ ذخیره کوو.

پرته د برخې میتود

د صف د محصول لپاره الګوریتم پرته د ځان ستونزه

1. Initialize an array a[] of size n and a variable prod as 1.
2. Create another array p[] of the same size with all the elements as 1.
3. Traverse all the values from starting index to last index and update the values of array p[] such that p[i] = prod and prod = prod * a[i].
4. Initialize prod as 1 again and start traversing the array from last index to starting index.
5. Update array p[] such that p[i] = prod and prod = prod * a[i].
6. Print the array p[].

کوډ

C ++ د ځان توکي سربیره د صفونو محصول لپاره برنامه

#include <bits/stdc++.h>
using namespace std;

void prodArray(int a[], int n){
        
    if(n == 1) { 
        cout<<"0"; 
        return; 
    } 

    int prod = 1; 
    int p[n]; 

    /* Initialize the product array p[] as 1 */
    for(int j=0; j<n; j++) 
        p[j] = 1; 

    /* prod variable contains product of 
       elements on left side excluding a[i] */
    for(int i=0; i<n; i++) { 
        p[i] = prod; 
        prod *= a[i]; 
    } 

    /* Initialize prod to 1 for product on right side */
    prod = 1; 

    /* prod variable contains product of 
       elements on right side excluding a[i] */
    for(int i=n-1; i>=0; i--) { 
        p[i] *= prod; 
        prod *= a[i]; 
    } 
    for(int i=0; i<n; i++) 
        cout<<p[i]<<" ";

    return; 
}

int main() {
  int a[] = {4, 6, 1, 2};
  int n = sizeof(a)/sizeof(a[0]);
  prodArray(a,n);
  return 0;
}
12 8 48 24

د صفونو پرته د صفونو محصول لپاره د جاوا برنامې

class product{
    
    void prodArray(int a[], int n){
        
        if(n == 1) { 
            System.out.print("0"); 
            return; 
        } 
  
        int prod = 1; 
        int p[] = new int[n]; 
  
        /* Initialize the product array p[] as 1 */
        for(int j=0; j<n; j++) 
            p[j] = 1; 
  
        /* prod variable contains product of 
           elements on left side excluding a[i] */
        for(int i=0; i<n; i++) { 
            p[i] = prod; 
            prod *= a[i]; 
        } 
  
        /* Initialize prod to 1 for product on right side */
        prod = 1; 
  
        /* prod variable contains product of 
           elements on right side excluding a[i] */
        for(int i=n-1; i>=0; i--) { 
            p[i] *= prod; 
            prod *= a[i]; 
        } 
        for(int i=0; i<n; i++) 
            System.out.print(p[i] + " ");
  
        return; 
    }
    
    public static void main(String[] args){
        product pro = new product();
    	int a[] = {4, 6, 1, 2};
    	int n = a.length;
    	pro.prodArray(a,n);
    }
}
12 8 48 24

د پیچلتیا تحلیل

د وخت پیچلتیا

O (N) ، ځکه چې دلته موږ د سایه N کچې لرونکي تیرونو څخه تیریږو.

د ځای پیچلتیا

O (1) ، ځکه چې موږ یوازې لومړني صف بدل کړی او یوازې اضافي مستقل ځای مو کارولی دی. برنامه د عمومي په توګه O (N) ځای نیسي مګر الګوریتم پخپله یوازې O (1) ځای نیسي.