Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

มีช่วงเวลาใน C++


สมมติว่าเรามีรายการช่วงสองมิติโดยที่แต่ละช่วงมีค่าสองค่า [start, end] เราต้องค้นหาว่ามีช่วงที่มีช่วงอื่นหรือไม่

ดังนั้น หากอินพุตเป็น [[2,4],[5,11],[5,9],[10,10]] ผลลัพธ์จะเป็นจริงเนื่องจาก [5,11] มี [5, 9].

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • จัดเรียงอาร์เรย์ v

  • กำหนดอาร์เรย์ 2D ret หนึ่งรายการ

  • สำหรับแต่ละช่วงเวลาใน v -

    • ถ้า ret ว่างเปล่า −

      • ใส่ท้าย ret

    • มิฉะนั้นเมื่อองค์ประกอบสุดท้ายของ ret>=it[0] แล้ว −

      • คืนความจริง

    • มิฉะนั้น

      • ใส่ท้าย ret

  • คืนค่าเท็จ

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

#include using namespace std;class Solution { public:bool static cmp(vector &a, vector &b) { return a[1] ==b[1] ? a[0]> b[0] :a[1] > &v) { sort(v.begin(), v.end(), cmp); เวกเตอร์<เวกเตอร์> ret; สำหรับ (อัตโนมัติ &it :v) { if (ret.empty()) ret.push_back(it); else if (ret.back()[0]>=it[0]) คืนค่าเป็น true; อื่น ret.push_back(มัน); } คืนค่าเท็จ }};main() { โซลูชัน ob; เวกเตอร์<เวกเตอร์> v ={{2,4},{5,11},{5,9},{10,10}}; cout <<(ob.solve(v));}

อินพุต

<ล่วงหน้า>{{2,4},{5,11},{5,9},{10,10}}

ผลลัพธ์

1