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

C++ में घूर्णित क्रमबद्ध सरणी II में खोज (Search in Rotated Sorted Array II)


मान लीजिए हमारे पास एक सरणी है जो आरोही क्रम में क्रमबद्ध है। लेकिन उसे किसी अज्ञात पिवट पर घुमा दिया गया है। उदाहरण के लिए, यदि सरणी [0,0,1,2,2,5,6] है, तो यह [2,5,6,0,0,1,2] बन सकती है। हमारे पास एक लक्ष्य मान है जिसे खोजना है। यदि वह सरणी में मिलता है, तो true वापस करें, अन्यथा false। यदि सरणी [2,5,6,0,0,1,2] है, और लक्ष्य 0 है, तो आउटपुट true होगा।

आइए चरण देखें:

  • low := 0 और high := सरणी का आकार
  • जब तक low < high:
    • mid := low + (high - low)/2
    • यदि nums[mid] = target, तो true वापस करें
    • यदि nums[low] = nums[mid] और nums[high - 1] = nums[mid], तो:
      • low को 1 बढ़ाएं और high को 1 घटाएं, और अगले इटरेशन के लिए कंटिन्यू करें
    • यदि nums[low] <= nums[mid], तो:
      • यदि target >= nums[low] और target < nums[mid], तो high := mid, अन्यथा low := mid + 1
    • अन्यथा:
      • यदि target <= nums[high - 1] और target > nums[mid], तो low := mid + 1, अन्यथा high := mid
    • false वापस करें

उदाहरण

class Solution(object):
    def search(self, nums, target):
        low = 0
        high = len(nums)
        while low < high:
            mid = low + (high - low) // 2
            if nums[mid] == target:
                return True
            if nums[low] == nums[mid] and nums[high-1] == nums[mid]:
                low += 1
                high -= 1
                continue
            if nums[low] <= nums[mid]:
                if target >= nums[low] and target < nums[mid]:
                    high = mid
                else:
                    low = mid + 1
            else:
                if target <= nums[high-1] and target > nums[mid]:
                    low = mid + 1
                else:
                    high = mid
        return False

इनपुट

[2,5,6,0,0,1,2] 0

आउटपुट

true
  1. क्लोजेस्ट बाइनरी सर्च ट्री वैल्यू II - C++ क्लोजेस्ट बाइनरी सर्च ट्री वैल्यू II - C++

    मान लीजिए हमारे पास एक बाइनरी सर्च ट्री और एक लक्ष्य मान है; हमें उस BST में k मान ढूंढने हैं जो लक्ष्य के सबसे करीब हैं। हमें ध्यान रखना होगा कि लक्ष्य मान एक फ्लोटिंग-पॉइंट संख्या है। हम मान सकते हैं कि k हमेशा वैध है, और k ≤ कुल नोड्स।तो, यदि इनपुट इस तरह हैtarget = 3.714286, और k = 2, तो आउटप

  1. - पायथन में घूर्णन क्रमबद्ध सरणी II में खोज

    मान लीजिए हमारे पास आरोही क्रम में क्रमबद्ध एक सरणी है। यह किसी अज्ञात पिवट पर घूमी हुई है। उदाहरण के लिए, यदि सरणी [0,0,1,2,2,5,6] जैसी है, तो यह [2,5,6,0,0,1,2] बन सकती है। हमारे पास खोजने के लिए एक लक्ष्य मान है। यदि वह सरणी में पाया जाता है, तो true लौटाएं, अन्यथा false लौटाएं। इसलिए यदि सरणी [2

  1. - पायथन में रोटेटेड सॉर्टेड सरणी में खोज

    मान लीजिए हमारे पास एक सरणी है जो आरोही क्रम में सॉर्टेड है, और वह किसी अज्ञात पिवट पर घुमाई गई है। उदाहरण के लिए, [0,1,2,4,5,6,7] [4,5,6,7,0,1,2] बन सकता है। हमें खोजने के लिए एक लक्ष्य मान दिया गया है। यदि हम इसे सरणी में पा सकते हैं, तो इसका इंडेक्स लौटाएं, अन्यथा -1 लौटाएं। हम मान सकते हैं कि सर