मान्य परफेक्ट स्क्वायर लेकोडकोड समाधान  


कठिनाई स्तर आसान
में अक्सर पूछा वीरांगना
एल्गोरिदम कोडिंग साक्षात्कार साक्षात्कार की तैयारी लेटकोड लेटकोड सॉल्यूशंस

यह पोस्ट Valid Perfect Square Leetcode Solution पर है

समस्या का विवरण  

समस्या में "मान्य परफेक्ट स्क्वायर" हमें एक नंबर "संख्या" दिया जाता है और हमें यह जांचना होगा कि क्या यह नंबर एक पूर्ण वर्ग है या नहीं। हमें अंतर्निहित sqrt फ़ंक्शन का उपयोग किए बिना इसे जांचना होगा।

यदि संख्या एक पूर्ण वर्ग है तो हम सही लौटाएंगे अन्यथा हम झूठे लौटेंगे।

उदाहरण  

num = 25
true

स्पष्टीकरण:

मान्य परफेक्ट स्क्वायर लेकोडकोड समाधान

25 एक वैध पूर्ण वर्ग है क्योंकि इसका वर्गमूल 5. है, इसलिए इसका उत्तर सही है।

दृष्टिकोण  

जैसा कि हम बिल्ट-इन फ़ंक्शन का उपयोग नहीं कर सकते हैं, इस समस्या को हल करने के लिए मूल दृष्टिकोण प्रत्येक संख्या को 1 से अंकों की जांच करना है और इसके वर्ग को खोजना है, फिर जांचें कि क्या इसका वर्ग संख्या के बराबर है। यदि वर्ग संख्या के बराबर है, तो संख्या एक मान्य पूर्ण वर्ग है, इसलिए हम सही वापस आएंगे और हम झूठे वापस आएंगे।

प्रत्येक संख्या को रैखिक रूप से जांचने के बावजूद, हम a का उपयोग करके समाधान में सुधार कर सकते हैं बाइनरी खोज दृष्टिकोण। इस दृष्टिकोण में, हमें अपनी खोज सीमा, प्रारंभ बिंदु और समापन बिंदु तय करने की आवश्यकता है।

  1. प्रारंभ बिंदु 1 होगा।
  2. समापन बिंदु सुन्न होगा क्योंकि संख्या से अधिक संख्या का वर्ग हमेशा संख्या से अधिक होगा।
  3. तो उसके लिए रेंज द्विआधारी खोज संख्या से 1 है।
  4. अब हम मध्य का वर्ग पाएंगे। यदि वर्ग संख्या के बराबर है तो हम और भी सही लौटाएंगे:
    1. यदि वर्ग संख्या से अधिक है, तो हमारा समापन बिंदु मध्य -1 तक कम हो जाएगा।
    2. और प्रारंभ बिंदु मध्य + 1 बन जाएगा।
  5. अंत में, यदि संख्या के किसी भी वर्ग के साथ संख्या का मिलान नहीं होता है, तो हम झूठे वापस आ जाएंगे।
यह भी देखें
लोगों को लेटेकोड समाधान के लिए कैंडी वितरित करें

कोड  

Valid Perfect Square Leetcode Solution के लिए C ++ कोड

#include <bits/stdc++.h> 
using namespace std; 
    bool isPerfectSquare(int num) {
        int s=1,e=num;
        while(s<=e)
        {
            long long int mid=s+(e-s)/2;
            if(mid*mid==num)
                return true;
            else if(mid*mid>num)
             e=mid-1;
            else
                s=mid+1;
        }
        return false;
    }
int main() 
{ 
 int num=25;
 cout<<boolalpha;
 cout<<isPerfectSquare(num)<<endl; 
 return 0;
}
true

Valid Perfect Square Leetcode Solution के लिए जावा कोड

import java.util.Arrays; 
public class Tutorialcup {
    public static  boolean isPerfectSquare(int num){
    long s=1,e=num;
        while(s<=e)
        {
            long mid=s+(e-s)/2;
            if(mid*mid==num)
                return true;
            else if(mid*mid>num)
             e=mid-1;
            else
                s=mid+1;
        }
        return false;
    }
  public static void main(String[] args) {
    int num=25;
    boolean ans=  isPerfectSquare(num);
    System.out.println(ans);
  }
}
true

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

समय की जटिलता

उपरोक्त कोड की समय जटिलता है ओ (logn)। यहाँ n संख्या का मान है।

अंतरिक्ष की जटिलता

उपरोक्त कोड की अंतरिक्ष जटिलता है ओ (1) क्योंकि हम उत्तर को संग्रहीत करने के लिए केवल एक चर का उपयोग कर रहे हैं।

संदर्भ