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

Minimum Moves to Equal Array Elements ใน C++

แนวคิด

สมมติว่ามีอาร์เรย์ขนาด n ให้หาจำนวนการเคลื่อนย้ายน้อยที่สุดเพื่อทำให้สมาชิกอาร์เรย์ทั้งหมดเท่ากัน โดยการเคลื่อนย้ายหมายถึงการเพิ่ม n - 1 สมาชิกขึ้น 1

เช่น ถ้าอินพุตคือ [3,2,3,4] ผลลัพธ์คือ 4

วิธีแก้:

  • n := ขนาด nums
  • ถ้า n เท่ากับ 0: คืนค่า 0
  • เรียงอาร์เรย์ nums
  • ans := 0
  • วนลูป i := 0 ถึง n - 1: ans := ans + nums[i] - nums[0]
  • คืนค่า ans

ตัวอย่าง

#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