สมมติว่าเรามีรายการจำนวนเต็มที่เรียกว่า 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