สมมติว่าเรามีรายการที่เรียกว่า nums เราต้องแสดงองค์ประกอบทั้งหมดของ nums ตามลำดับในแนวทแยง
ดังนั้นหากอินพุตเป็นแบบ
แล้วผลลัพธ์จะเป็น [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, ]