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

Making List Values Equal in C++: หา Operations น้อยที่สุดเพื่อทำให้ค่าทั้งหมดเท่ากัน

กำหนด array nums Operation หนึ่งครั้ง = เลือก subset ใดก็ได้ แล้ว +1 ทุกตัวใน subset หาจำนวน operation น้อยที่สุดเพื่อทำให้ค่าทุกตัวเท่ากัน

ตัวอย่าง: [1,3,5] → Output: 4

คำอธิบาย: ต้องเพิ่มค่า 1 ให้เป็น 5 (4 ครั้ง), 3 ให้เป็น 5 (2 ครั้ง) แต่ทำพร้อมกันได้ → ต้องใช้ max - min = 4 ครั้ง

ข้อสังเกตสำคัญ

ในแต่ละ operation สามารถเพิ่ม subset ใดก็ได้ → สามารถเพิ่มค่าน้อยๆ พร้อมกันได้ จำนวนรอบขั้นต่ำ = max(nums) - min(nums)

ตัวอย่างโค้ด C++

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int solve(vector<int>& nums) {
        if(nums.size() == 1) return 0;
        int mx = *max_element(nums.begin(), nums.end());
        int mn = *min_element(nums.begin(), nums.end());
        return mx - mn;
    }
};

int main() {
    Solution ob;
    vector<int> v = {1,3,5};
    cout << ob.solve(v);
}

Input

{1,3,5}

Output

4