मान लीजिए कि एक आयत है जिसे एक सूची [x1, y1, x2, y2] के रूप में दर्शाया गया है, जहाँ (x1, y1) इसके निचले-बाएँ कोने के निर्देशांक हैं, और (x2, y2) इसके शीर्ष के निर्देशांक हैं- दांया कोना। अब दो आयतें ओवरलैप करती हैं यदि उनके प्रतिच्छेदन का क्षेत्रफल धनात्मक है। इसलिए, हम समझ सकते हैं कि दो आयतें जो केवल कोने या किनारों पर स्पर्श करती हैं, ओवरलैप नहीं होती हैं।
अगर हमारे पास दो (अक्ष-संरेखित) आयत हैं, तो हमें जांचना होगा कि वे ओवरलैप करते हैं या नहीं।
इसलिए, यदि इनपुट R1 =[0,0,2,2], R2 =[1,1,3,3] जैसा है, तो आउटपुट ट्रू होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- अगर R1[0]>=R2[2] या R1[2]<=R2[0] या R1[3]<=R2[1] या R1[1]>=R2[3], तो
- झूठी वापसी
- अन्यथा,
- सही लौटें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def isRectangleOverlap(self, R1, R2): if (R1[0]>=R2[2]) or (R1[2]<=R2[0]) or (R1[3]<=R2[1]) or (R1[1]>=R2[3]): return False else: return True ob = Solution() print(ob.isRectangleOverlap([0,0,2,2],[1,1,3,3]))
इनपुट
[0,0,2,2],[1,1,3,3]
आउटपुट
True