Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में स्मॉलेस्ट रेंज II (Smallest Range II)


मान लीजिए हमारे पास पूर्णांकों का एक ऐरे A है, प्रत्येक पूर्णांक A[i] के लिए हमें या तो x = -K या x = K चुनना है, और x को A[i] में जोड़ना है (केवल एक बार)। इस प्रक्रिया के बाद, हमारे पास कुछ ऐरे B होगा। हमें B के अधिकतम मान और न्यूनतम मान के बीच सबसे छोटे संभव अंतर को खोजना है।

उदाहरण के लिए, यदि इनपुट A = [0,10], K = 2 है, तो आउटपुट 6 होगा, क्योंकि B = [2,8]।

समाधान दृष्टिकोण

  1. ret := 0, n := A का आकार

  2. A को सॉर्ट करें

  3. ret := A[n-1] - A[0]

  4. right := A[n-1] - K, left := A[0] + K

  5. i को 0 से n-2 तक: mx = max(A[i]+K, right), mn = min(A[i+1]-K, left), ret = min(ret, mx-mn)

  6. ret लौटाएं

C++ कार्यान्वयन

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

class Solution { 
public: 
    int smallestRangeII(vector<int>& A, int k) { 
        int ret = 0; 
        int n = A.size(); 
        sort(A.begin(), A.end()); 
        ret = A[n - 1] - A[0]; 
        int mx, mn; 
        int right = A[n - 1] - k; 
        int left = A[0] + k; 
        for(int i = 0; i < n - 1; i++){ 
            mx = max(A[i] + k, right); 
            mn = min(A[i + 1] - k, left); 
            ret = min(ret, mx - mn); 
        } 
        return ret; 
    } 
}; 

int main(){ 
    vector<int> v = {0, 10}; 
    Solution ob; 
    cout << (ob.smallestRangeII(v, 2)); 
    return 0; 
}

इनपुट

[0,10] 2

आउटपुट

6
  1. - C++ में ऐरे में रेंज का मीन

    इस समस्या में, हमें n इंटीजर्स का एक ऐरे और कुछ m क्वेरीज दी गई हैं। हमारा कार्य एक ऐसा प्रोग्राम बनाना है जो क्वेरीज द्वारा दी गई रेंज के मीन का इंटीग्रल मान (राउंड डाउन) गणना करे।समस्या को समझने के लिए एक उदाहरण लेते हैं,इनपुट −array = {5, 7, 8, 9, 10} m = 2; [0, 3], [2, 4]आउटपुट −7 9इ

  1. - C++ में एक रेंज में सेट बिट्स कॉपी करना

    इस ट्यूटोरियल में, हम दी गई रेंज में एक संख्या के सेट बिट्स को दूसरी संख्या में कॉपी करने के लिए एक प्रोग्राम पर चर्चा करेंगे।इसके लिए हमें दो पूर्णांक प्रदान किए जाएंगे। हमारा कार्य पहली संख्या में बिट्स देखना और उन बिट्स को दूसरी संख्या में भी सेट करना है यदि वे दी गई रेंज में हैं। अंत में उत्पन्न

  1. - पायथन में सबसे छोटी रेंज I

    मान लीजिए हमारे पास पूर्णांकों की एक सरणी A है, अब प्रत्येक पूर्णांक A[i] के लिए हम [-K से K] रेंज में कोई भी x चुन सकते हैं फिर x को A[i] में जोड़ सकते हैं। अब इस प्रक्रिया के बाद, हमारे पास कुछ सरणी B है। हमें B के अधिकतम मान और न्यूनतम मान के बीच सबसे छोटा संभव अंतर ढूंढना है। तो, यदि इनपुट A =