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