Computer >> Máy Tính >  >> Lập trình >> C ++

Làm cho giá trị danh sách bằng nhau trong C ++


Giả sử chúng ta có một danh sách các số nguyên được gọi là nums. Bây giờ, giả sử một phép toán trong đó chúng ta chọn một số tập hợp con của các số nguyên trong danh sách và tăng tất cả chúng lên một. Chúng ta phải tìm số lượng thao tác bắt buộc tối thiểu để làm cho tất cả các giá trị trong danh sách bằng nhau.

Vì vậy, nếu đầu vào là [1,3,5], thì đầu ra sẽ là 4.

Để giải quyết vấn đề này, chúng ta sẽ làm theo các bước sau -

  • nếu kích thước của num bằng 1, thì -

    • trả về 0

  • ret:=0

  • maxVal:=-inf

  • minVal:=inf

  • để khởi tạo i:=0, khi tôi

    • maxVal:=tối đa của maxVal và nums [i]

    • minVal:=tối thiểu của minVal và nums [i]

  • trả về maxVal - minVal

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int solve(vector<int> &nums) {
      if (nums.size() == 1)
      return 0;
      int ret = 0;
      int maxVal = INT_MIN;
      int minVal = INT_MAX;
      for (int i = 0; i < nums.size(); i++) {
         maxVal = max(maxVal, nums[i]);
         minVal = min(minVal, nums[i]);
      }
      return maxVal - minVal;
   }
};
main() {
   Solution ob;
   vector<int> v = {1,3,5};
   cout << (ob.solve(v));
}

Đầu vào

{1,3,5}

Đầu ra

4