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

เส้นทแยงมุม II ใน C++


สมมติว่าเรามีรายการที่เรียกว่า nums เราต้องแสดงองค์ประกอบทั้งหมดของ nums ตามลำดับในแนวทแยง

ดังนั้นหากอินพุตเป็นแบบ

เส้นทแยงมุม II ใน C++

แล้วผลลัพธ์จะเป็น [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16]

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

  • กำหนดอาร์เรย์ ret

  • กำหนดอาร์เรย์ 2 มิติ v

  • สำหรับการเริ่มต้น i :=0 เมื่อ i <ขนาดของ nums ให้อัปเดต (เพิ่ม i ขึ้น 1) ให้ทำ -

    • สำหรับการเริ่มต้น j :=0 เมื่อ j

      • ใส่ { nums[i, j], i, j } ต่อท้าย v

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

  • สำหรับแต่ละมันใน v ทำ

    • ใส่มัน[0] ที่ส่วนท้ายของ ret

  • รีเทิร์น

ตัวอย่าง

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

#include ใช้เนมสเปซ std;void print_vector(vector v){ cout <<"["; for(int i =0; i&a, vector &b ){ int sum1 =a[1] + a[2]; int sum2 =b[1] + b[2]; ผลตอบแทน sum1 ==sum2 ? a[1]> b[1] :sum1  findDiagonalOrder(vector&nums) { vector ret; เวกเตอร์<เวกเตอร์> v; สำหรับ (int i =0; i > v ={{1,2,3,4,5},{6,7},{8},{9,10,11},{12,13,14,15,16 }}; print_vector(ob.findDiagonalOrder(v));}

อินพุต

<ก่อน>{{1,2,3,4,5},{6,7},{8},{9,10,11},{12,13,14,15,16}}

ผลลัพธ์

[1, 6, 2, 8, 7, 3, 9, 4, 12, 10, 5, 13, 11, 14, 15, 16, ]