สมมติว่าเรามีรายการจำนวนเต็มที่เรียกว่า nums ตอนนี้ สมมติว่าเป็นการดำเนินการที่เราเลือกชุดย่อยของจำนวนเต็มในรายการ และเพิ่มค่าทั้งหมดทีละรายการ เราต้องหาจำนวนขั้นต่ำของการดำเนินการที่จำเป็นเพื่อให้ค่าทั้งหมดในรายการมีค่าเท่ากัน
ดังนั้นหากอินพุตเท่ากับ [1,3,5] เอาต์พุตจะเป็น 4
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ถ้าขนาดของ nums เท่ากับ 1 แล้ว −
-
คืนค่า 0
-
-
ยกเลิก :=0
-
maxVal :=-inf
-
minVal :=inf
-
สำหรับการเริ่มต้น i :=0 เมื่อ i <ขนาดของ nums ให้อัปเดต (เพิ่ม i ขึ้น 1) ให้ทำ -
-
maxVal :=สูงสุดของ maxVal และ nums[i]
-
minVal :=ขั้นต่ำของ minVal และ nums[i]
-
-
คืนค่า maxVal - minVal
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
#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));
} อินพุต
{1,3,5} ผลลัพธ์
4