สมมติว่าเรามีรายการจำนวนเต็ม เราต้องเรียงลำดับรายการในลักษณะนี้ -
-
องค์ประกอบแรกสูงสุด
-
องค์ประกอบที่สองขั้นต่ำ
-
องค์ประกอบที่สามคือสูงสุดที่ 2
-
องค์ประกอบที่สี่คือขั้นต่ำที่ 2
เป็นต้น
ดังนั้น หากอินพุตเป็น [6,3,10,4] ผลลัพธ์จะเป็น [10, 3, 6, 4]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนดอาร์เรย์ ret
-
จัดเรียงตัวเลขอาร์เรย์
-
j :=ขนาดของ nums - 1
-
ผม :=0
-
ในขณะที่ฉัน <=j ทำ -
-
ใส่ nums[j] ต่อท้าย ret
-
(ลด j โดย 1)
-
ถ้าฉัน <=j แล้ว −
-
ใส่ nums[i] ต่อท้าย ret
-
(เพิ่ม i ขึ้น 1)
-
-
-
รีเทิร์น
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; void print_vector(vector<auto> v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << v[i] << ", "; } cout << "]"<<endl; } class Solution { public: vector<int> solve(vector<int> & nums) { vector<int> ret; sort(nums.begin(), nums.end()); int j = nums.size() - 1; int i = 0; while (i <= j) { ret.push_back(nums[j]); j--; if (i <= j) { ret.push_back(nums[i]); i++; } } return ret; } }; main() { Solution ob; vector<int> v = {6,3,10,4}; print_vector(ob.solve(v)); }
อินพุต
{6,3,10,4}
ผลลัพธ์
10, 3, 6, 4