पानी बोतलहरू लेटकोड समाधान


कठिनाई तह सजिलो
बारम्बार सोधिन्छ माइक्रोसफ्ट
लोभी

समस्या बयान

समस्यामा "पानी बोतलहरू" हामीलाई दुईवटा मानहरू दिइन्छ "नामबोटल" जसले पूर्ण पानी बोतलहरूको स number्ख्या र "numExchange" भण्डार गर्दछ जसले खाली पानीको बोतलहरूको जम्मा संख्या भण्डार गर्दछ जुन हामी एक पटकमा आदानप्रदान गर्न सक्दछौं र पूरा पाउनेछौं। पानी बोतल।

पूर्ण पानीको बोतलबाट पानी पिए पछि यो खाली पानीको बोतलमा परिणत हुन्छ। हाम्रो कार्य भनेको हामी पिउन सक्ने पूर्ण पानीको बोतलहरूको अधिकतम संख्या पत्ता लगाउनु हो।

उदाहरणका

numBottles = 15, numExchange = 4
19

व्याख्या:

पानी बोतलहरू लेटकोड समाधान

पहिलो चरण: पिउन 15 पानीको बोतलहरूले १ empty खाली बोतल दिन्छ।

दोस्रो दौर: यी १ water पानी बोतलहरूबाट हामी full पूर्ण पानी बोतलहरू पाउँछौं र empty खाली बोतलहरूसहित छोडिन्छौं। पेय 3 पानीको बोतलहरू अब हामी कुल empty खाली बोतलहरूसहित छोडेका छौं।

तेस्रो राउन्ड: यी water पानी बोतलहरूबाट हामी १ पानीको बोतल पाउँछौं र २ खाली बोतलहरू सहित छोडिन्छौं। १ पानी बोतलहरू पिउनुहोस् अब हामी जम्मा empty खाली बोतलहरूसहित छोडेका छौं।

न्यूनतम bott बोतल बोतललाई आदान प्रदान गर्न आवश्यक छ हामी अब पूर्ण पानीको बोतल किन्न सक्दैनौं। त्यसैले हामी पिउन सक्ने पानीको बोतलहरूको अधिकतम संख्या हो १ + + + + १ = १।

पानी बोतलहरूको लेटकोड समाधानको लागि दृष्टिकोण

समस्या समाधान गर्न आधारभूत दृष्टिकोण भनेको प्रश्नहरू के गर्ने भन्ने हो।

  1. सबै पूर्ण पानीको बोतलहरू पिउनुहोस् त्यसपछि खाली पानीको बोतलहरूमा रूपान्तरण गर्दछ।
  2. सबै खाली पानीको बोतलहरूबाट पूरा पानीको बोतलहरू किन्छन्।
  3. खाली चरणको बोतलबाट पूर्ण पानीको बोतल किन्न नसकेसम्म यी चरणहरू दोहोर्याउनुहोस्।
  4. प्रक्रियाको क्रममा हामीले पिएको पानीको बोतलहरूको जम्मा संख्या फिर्ता गर्नुहोस्।

हामी सुधार गर्न सक्छौं जटिलता केही अवलोकनहरू गरेर समाधानको:

  1. हामीसँग पूरा पानीको बोतलहरूको नम्बरबोटल छ त्यसैले हामी पिउन सक्ने पूर्ण पानीको बोतलहरूको संख्या यही नै हुनेछ।
  2. १ पूर्ण पानीको बोतल = १ युनिट पानी + १ खाली पानीको बोतल।
  3. NumExchange खाली पानी बोतलहरु बाट, हामी 1 पानीको बोतल (1 यूनिट पानी + 1 खाली पानीको बोतल) पाउँछौं। यस चीजलाई अर्थहीन गर्न सकिन्छ (numExchange-1) पानीको बोतलहरूले पानीको एक इकाई दिन्छ।
  4. तर यदि अन्तिम चरणमा यदि हामीसँग (numExchange-1) खाली बोतलहरूको संख्या छ भने हामी एक इकाई पानी लिन सक्दैनौं।
  5. त्यसोभए हाम्रो परिणाम numbટલ + (numBટલ / (numExchange -1)) हुनेछ र numb بوت% (numExchange -1) == 0 तब अन्तिम उत्तरबाट १ घटाउनुहुनेछ।

कार्यान्वयन

पानी बोतलहरूका लागि C ++ कोड

#include <bits/stdc++.h> 
using namespace std; 
    int numWaterBottles(int numBottles, int numExchange) {
        int ans= numBottles + (numBottles) / (numExchange - 1);
        if((numBottles) %(numExchange - 1)==0)
            ans--;
        return ans;
    }
int main() 
{ 
 int numBottles = 15, numExchange = 4;
 int ans=numWaterBottles(numBottles,numExchange);
 cout<<ans<<endl;
 return 0;
}
19

पानी बोतलहरूको लागि जाभा कोड

import java.util.Arrays;
import java.util.Set ;
import java.util.HashSet;
public class Tutorialcup {
    public static int numWaterBottles(int numBottles, int numExchange) {
        int ans= numBottles + (numBottles) / (numExchange - 1);
        if((numBottles) %(numExchange - 1)==0)
            ans--;
        return ans;
    }
  public static void main(String[] args) {
     int numBottles = 15, numExchange = 4;
     int ans=numWaterBottles(numBottles,numExchange); 
        System.out.println(ans);
  }
}
19

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

समय जटिलता

माथिको कोडको समय जटिलता हो O (१)

ठाउँ जटिलता

माथिको कोडको स्पेस जटिलता हो O (१) किनभने हामी उत्तरहरू भण्डारण गर्नका लागि मात्र एउटा चल प्रयोग गरिरहेका छौं।

सन्दर्भ