زیرو لیٹکوڈ حل تک N انفرادی انفرز کا خلاصہ تلاش کریں


مشکل سطح آرام سے
اکثر پوچھا جاتا ہے ایڈوب ایمیزون فیس بک مائیکروسافٹ
لڑی

یہ مسئلہ صفر لیٹ کوڈ حل تک کے انوکھے انفرز کا خلاصہ تلاش کریں ، جو ہمیں ایک عدد فراہم کرتا ہے۔ یہ ہم سے ن انفرادی انجیٹ کو واپس کرنے کے لئے کہتا ہے جو 0 تک کا ہے۔ تو ، یہ سوال سمجھنا بہت آسان ہے۔ لہذا ، حل میں غوطہ لگانے سے پہلے۔ آئیے کچھ مثالوں پر ایک نظر ڈالیں۔

زیرو لیٹکوڈ حل تک N انفرادی انفرز کا خلاصہ تلاش کریں

n = 5
[-7,-1,1,3,4]

وضاحت: ٹھیک ہے ، مسئلہ کی ایک سے زیادہ آؤٹ پٹ ہوسکتی ہے۔ لیکن ہم دیئے گئے آؤٹ پٹ کو لیں۔ آؤٹ پٹ میں تمام انٹیجرز منفرد ہیں۔ اس طرح مسلط کی گئی حالت اور تمام دیئے گئے اعداد کا مجموعہ 0 کو پورا کرنا ہے۔ لہذا ، دونوں شرائط مطمئن ہیں۔

n = 3
[-1, 0, 1]

وضاحت: دیئے گئے آؤٹ پٹ میں تمام انفرادیت ہوتی ہے اور ان کی رقم بھی 0 ہوتی ہے۔

زیرو لیٹ کوڈ حل تک ن منفرد انٹجرز کی تلاش کے ل Appro اپروچ

مسائل کا نقط The نظر زیادہ تر وقت پیٹرن کو توڑ رہا ہے۔ اس قسم کے سوالات میں ہمیشہ کچھ بنیادی نمونے ہوتے ہیں۔ لہذا ، جب بھی ہم کسی سوال کا نمونہ تلاش کرنے کی کوشش کرتے ہیں۔ ہمیشہ ن کی چھوٹی اقدار کے لئے جواب تلاش کرنے کی کوشش کریں ، پھر نمونہ تلاش کرنے کی کوشش کریں۔ n = 1 کے لئے ، آؤٹ پٹ 0 ہوسکتی ہے۔ n = 2 کے لئے ، آؤٹ پٹ [-1، 1] ہوسکتا ہے۔ اسی طرح n = 3 کے لئے ، آؤٹ پٹ [-2، 0، 2]، n = 4 کے لئے ، آؤٹ پٹ [-3، -1، 1، 3] ہوسکتا ہے۔ تو ، ہم ایک نمونہ دیکھتے ہیں کہ آؤٹ پٹ اے پی تشکیل دیتا ہے جہاں اگر ن کی قدر عجیب ہے۔ درمیانی عنصر 0. ہے۔ اگر ن کی قدر بھی ہے تو (n + 1) / 2 عنصر 1 ہے۔ لہذا ، اس معلومات کو استعمال کرتے ہوئے ، ہم ایک فارمولا وضع کرسکتے ہیں۔ فارمولا ایک [i] = 2 * i + 1-n ہوسکتا ہے۔ اب ، ہم آسانی سے اس فارمولے کو n عناصر کو پُر کرنے کے لئے استعمال کرتے ہیں صف.

زیرو لیٹ کوڈ حل تک نیز انفرادیت کا خلاصہ تلاش کرنے کا کوڈ

C ++ کوڈ

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

vector<int> sumZero(int n) {
    vector<int> v(n);
    for(int i=0;i<n;i++)
        v[i] = 2*i - n + 1;
    return v;
}

int main(){
    vector<int> output = sumZero(7);
    for(auto x: output)
        cout<<x<<" ";
}
-6 -4 -2 0 2 4 6

جاوا کوڈ

import java.util.*;
import java.lang.*;
import java.io.*;

class Main
{
    public static int[] sumZero(int n) {
        int[] v = new int[n];
        for(int i=0;i<n;i++)
            v[i]= 2*i - n + 1;
        return v;
    }
    
    public static void main(String[] args){
    	int[] output = sumZero(7);
    	for(int i=0;i<7;i++)
    		System.out.print(output[i]+" ");
    }
}
-6 -4 -2 0 2 4 6

پیچیدگی کا تجزیہ

وقت کی پیچیدگی

O (N) ، چونکہ ہم صرف صف کو بھرتے ہیں اور ہر عنصر کا حساب کتاب کیا جاسکتا ہے O (1). اس طرح ، وقت کی پیچیدگی لکیری ہے۔

خلائی پیچیدگی

O (N) ، کیونکہ ہم ایک صف تیار کرتے ہیں جسے آؤٹ پٹ کے طور پر واپس کرنا ہوتا ہے۔