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

C++ में सबसे छोटी रेंज II

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

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • रिट सेट करें:=0, एन:=सरणी ए का आकार

  • सरणी A को सॉर्ट करें

  • सेट रिट:=ए का अंतिम तत्व - ए का पहला तत्व

  • दायां:=A – K का अंतिम तत्व और बायां:=A + k का पहला तत्व

  • मेरे लिए 0 से n - 1 की सीमा में

    • mx :=अधिकतम A[i] + k और दाएँ

    • mn :=मिनट A[i + 1] – k और बाएँ

    • रिट :=मिनट का रिट और (एमएक्स - मिनट)

  • वापसी रिट

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#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;
   }
};
main(){
   vector<int> v = {0, 10};
   Solution ob;
   cout << (ob.smallestRangeII(v, 2));
}

इनपुट

[0,10]
2

आउटपुट

6

  1. सी ++ में सरणी में श्रेणी का मतलब

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

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

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

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

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