সমস্যা বিবরণ
দুটি অক্ষ-সমান্তরাল (axis-aligned) আয়ত দেওয়া থাকে, প্রতিটি [x1, y1, x2, y2] ফরম্যাটে (নিচের বাম এবং উপরের ডান কোণার কোঅর্ডিনেট)। দুটি আয়ত ওভারল্যাপ করে কিনা (ইন্টারসেকশন এর এলিয়া পজিটিভ কিনা) তা যাচাই করুন। শুধু কোণা বা প্রান্ত স্পর্শ করলে ওভারল্যাপ না মনে করা হয়।
উদাহরণ
R1 = [0,0,2,2], R2 = [1,1,3,3] → আউটপুট: True
এলগরিদম
দুটি আয়ত ওভারল্যাপ করে না যদি:
- R1, R2-এর ডান পাশে থাকে:
R1[0] >= R2[2] - R1, R2-এর বাম পাশে থাকে:
R1[2] <= R2[0] - R1, R2-এর নিচে থাকে:
R1[3] <= R2[1] - R1, R2-এর উপরে থাকে:
R1[1] >= R2[3]
উপরোক্ত যেকোনো শর্ত সত্য হলে False, অন্যথায় True।
পাইথন বাস্তবায়ন
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
return True
ob = Solution()
print(ob.isRectangleOverlap([0,0,2,2], [1,1,3,3])) # True
ইনপুট / আউটপুট
ইনপুট: [0,0,2,2], [1,1,3,3] আউটপুট: True