สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องจัดเรียงใหม่เพื่อให้ได้จำนวนที่มากที่สุดและส่งคืนเป็นสตริง
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[20, 8, 85, 316] เอาต์พุตจะเป็น "88531620"
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- กำหนดอุณหภูมิอาร์เรย์
- สำหรับแต่ละรายการ i เป็น nums:
- ใส่ i ลงใน temp เป็นสตริง
- จัดเรียงอุณหภูมิอาร์เรย์ตามลำดับศัพท์ (ตรวจสอบสองสตริง a, b เมื่อต่อ b มากกว่า b ต่อ a หรือไม่)
- สำหรับแต่ละสตริงใน temp:
- res :=res ต่อกัน
- ผลตอบแทน
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; static bool cmp(string a, string b) { return (a + b) >= (b + a); } string solve(vector<int>& nums) { vector<string> temp; for (int i : nums) { temp.push_back(to_string(i)); } sort(temp.begin(), temp.end(), cmp); string res; for (string s : temp) { res += s; } return res; } int main(){ vector<int> v = {20, 8, 85, 316}; cout << solve(v); }
อินพุต
{20, 8, 85, 316}
ผลลัพธ์
88531620