प्लस वन लीटकोड समाधान


कठिनाई तह सजिलो
बारम्बार सोधिन्छ एडोब अमेजन एप्पल राजधानी एक फेसबुक गुगल माइक्रोसफ्ट
एरे

समस्या बयान

समस्या "प्लस वन" मा हामीलाई एरे दिइन्छ जहाँ एर्रेमा प्रत्येक एलिमेन्ट्सले नम्बरको अंक प्रतिनिधित्व गर्दछ। पूर्ण एर्रे एक संख्या को प्रतिनिधित्व गर्दछ। Zeroth अनुक्रमणिका प्रतिनिधित्व गर्दछ MSB संख्याको। हामी अनुमान लगाउन सक्छौं कि संख्यामा कुनै अग्रणी शून्य छैन।

हाम्रो कार्य एउटा दिइएको संख्यालाई प्लस गर्नु हो र परिणामलाई एरेको रूपमा फर्काउँछ।

उदाहरणका

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

व्याख्या:

प्लस वन लीटकोड समाधान

दिइएका उदाहरणमा जस्तै एर्रेले 4321२१ र 4321२१ + १ 1 4322२२ प्रतिनिधित्व गर्दछ। त्यसैले हामी 4322 XNUMX२२ फर्क्यौं।

प्लस वन लीटकोड समाधानको लागि दृष्टिकोण

पहिलो विचार जुन सबैको दिमागमा आउँदछ जुन दिइएको एरेलाई नम्बरमा रूपान्तरण गर्नु, थप अपरेशन गर्नु, र त्यसपछि परिणाम एर्रेको रूपमा फर्काउनु हो।

तर यो विचार ठूलो आकारको एरेका लागि असफल हुनेछ किनकि यो कुनै डाटा प्रकारमा फिट हुँदैन।

त्यसो भए हामीले प्रत्येक अ one्कलाई एक-एक गरेर प्रशोधन गर्न आवश्यक छ।

  1. LSB बाट सुरू गर्नुहोस् र त्यसपछि प्रत्येक अंकलाई MSB सम्म प्रक्रिया गर्नुहोस्।
  2. यदि हालको अंक than भन्दा सानो छ भने हालको अंकमा एउटा थप्नुहोस् र एर्रे फिर्ता गर्नुहोस् अन्यथा शून्यलाई हालको अंकमा निर्दिष्ट गर्नुहोस्।
  3. यदि अन्तिम एलिमेन्ट प्रोसेस गरिएको छ र यो 9 को बराबर थियो भने यसको मतलब सबै अ 9.्क 1. हुन्। त्यसो भए हामी एरेको साइज एक गरी बढाउनेछौं र १ लाई एमएसबी लाई तोक्नेछौं।
  4. एर्रे फर्काउनुहोस्

कार्यान्वयन

प्लस वन को लागी C ++ कोड

#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]

प्लस वन लीटकोड समाधानको जटिलता विश्लेषण

समय जटिलता

माथिको कोडको समय जटिलता हो ऊ) किनकि हामी अ ar्कहरू एर्रेमा मात्र एक पटक पार गर्दैछौं। यहाँ n अंक को दायरा को लम्बाई छ।

ठाउँ जटिलता

माथिको कोडको स्पेस जटिलता हो O (१)  यदि एर्रेमा कम्तिमा digit अ smaller्क सानो भन्दा सानो हुन्छ, अन्यथा ऊ).

सन्दर्भ