پلس ون لیٹکوڈ حل


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

مسئلہ یہ بیان

"پلس ون" کی پریشانی میں ہمیں ایک صف فراہم کی جاتی ہے جہاں صف میں موجود ہر عنصر ایک اعداد کے ہندسے کی نمائندگی کرتا ہے۔ مکمل صف ایک نمبر کی نمائندگی کرتی ہے۔ زیروت انڈیکس کی نمائندگی کرتا ہے MSB نمبر کی ہم فرض کر سکتے ہیں کہ تعداد میں کوئی صفر نہیں ہے۔

ہمارا کام یہ ہے کہ ایک دیئے گئے نمبر کو جمع کریں اور پھر سرنی کی شکل میں نتیجہ لوٹائیں۔

مثال کے طور پر

digits =[4,3,2,1]
[4,3,2,2]

وضاحت:

پلس ون لیٹکوڈ حل

جیسا کہ دی گئی مثال میں ، سرنی 4321 اور 4321 + 1 4322 بن جاتی ہے۔ لہذا ہم 4322 واپس آئے۔

پلس ون لیٹکوڈ حل کے ل Appro اپروچ

پہلا خیال جو ہر ایک کے ذہن میں آتا ہے وہ یہ ہے کہ دی گئی سرنی کو ایک نمبر میں تبدیل کیا جائے ، اضافی کارروائی کی جائے ، اور پھر نتیجہ کو سرنی کی صورت میں واپس کیا جائے۔

لیکن یہ خیال بڑے سائز کے صفوں میں ناکام ہوجائے گا کیونکہ یہ کسی بھی قسم کے ڈیٹا میں فٹ نہیں ہوگا۔

لہذا ، ہمیں ہر ایک ہندسے کو ایک ایک کرکے کارروائی کرنے کی ضرورت ہے۔

  1. ایل ایس بی سے شروع کریں اور پھر ایم ایس بی تک ہر ہندسے پر کارروائی کریں۔
  2. اگر موجودہ عددی 9 سے چھوٹا ہے تو موجودہ ہندسے میں ایک شامل کریں اور صف کو واپس کریں ورنہ موجودہ ہندسے کو صفر تفویض کریں۔
  3. اگر آخری عنصر پر کارروائی کی جاتی ہے اور یہ 9 کے برابر بھی ہوتا ہے تو اس کا مطلب یہ ہے کہ تمام ہندسے 9 تھے۔ لہذا ، ہم صفوں کے سائز میں ایک سے اضافہ کریں گے اور 1 ایم ایس بی کو تفویض کریں گے۔
  4. صف کو واپس کریں

عمل

پلس ون کیلئے سی ++ کوڈ

#include <bits/stdc++.h> 
using namespace std; 
    vector<int> plusOne(vector<int>& digits) {
        int n=digits.size();
        for(int i=n-1;i>=0;i--)
        {
            if(digits[i]<9)
            {digits[i]++ ; return digits;} 
            else
                digits[i]=0;
        }
        vector<int>newnumber(n+1,0);
        newnumber[0]=1;
        return newnumber;
    }
int main() 
{ 
 vector<int> arr = {4,3,2,1}; 
  vector<int>ans= plusOne(arr); 
 for(int i=0;i<arr.size();i++)
 cout<<ans[i]<<" ";
 cout<<endl;
 return 0;
}
[4,3,2,2]

پلس ون کے لئے جاوا کوڈ

import java.util.Arrays; 
public class Tutorialcup {
public static int[] plusOne(int[] digits) {
        
    int n = digits.length;
    for(int i=n-1; i>=0; i--) {
        if(digits[i] < 9) {
            digits[i]++; return digits;
        }
        digits[i] = 0;
    }
    
    int[] newNumber = new int [n+1];
    newNumber[0] = 1;
    return newNumber;
}
  public static void main(String[] args) {
        int [] arr = {4,3,2,1}; 
        int[]ans=plusOne(arr); 
        System.out.println(Arrays.toString(ans));
  }
}
[4,3,2,2]

پلس ون لیٹکوڈ حل کا پیچیدہ تجزیہ

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

مذکورہ کوڈ کی ٹائم پیچیدگی ہے اے (ن) کیونکہ ہم صرف ایک بار ہندسوں کی صف کو عبور کررہے ہیں۔ یہاں n عددی سرے کی لمبائی ہے۔

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

مذکورہ کوڈ کی جگہ کی پیچیدگی ہے O (1)  صورت میں اگر صف میں کم سے کم ایک ہندسہ 9 سے چھوٹا ہو ، بصورت دیگر اے (ن).

حوالہ جات