908. Smallest Range I
Вам дан số nguyên mảng nums и số nguyên k. За одну операцию вы можете выбрать любой индекс i, где 0 <= i < nums.length, и изменить nums[i] на nums[i] + x, где x - số nguyên из диапазона [-k, k]. Эту операцию можно применять не более одного раза для каждого индекса i. Оценка nums - это разница между максимальным и минимальным elementами в nums. return минимальную оценку nums после Applications указанной операции не более одного раза для каждого индекса в нем.
Ví dụ:
Input: nums = [1], k = 0
Output: 0
C# lời giải
đã khớp/gốcpublic class Solution {
public int SmallestRangeI(int[] nums, int k) {
int minVal = int.MaxValue;
int maxVal = int.MinValue;
foreach (int num in nums) {
if (num < minVal) minVal = num;
if (num > maxVal) maxVal = num;
}
return Math.Max(0, (maxVal - k) - (minVal + k));
}
}
C++ lời giải
bản nháp tự động, xem lại trước khi gửi#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public int SmallestRangeI(vector<int>& nums, int k) {
int minVal = int.MaxValue;
int maxVal = int.MinValue;
foreach (int num in nums) {
if (num < minVal) minVal = num;
if (num > maxVal) maxVal = num;
}
return max(0, (maxVal - k) - (minVal + k));
}
}
Java lời giải
đã khớp/gốcclass Solution {
public int smallestRangeI(int[] nums, int k) {
int minVal = Integer.MAX_VALUE;
int maxVal = Integer.MIN_VALUE;
for (int num : nums) {
if (num < minVal) minVal = num;
if (num > maxVal) maxVal = num;
}
return Math.max(0, (maxVal - k) - (minVal + k));
}
}
Algorithm
1⃣find минимальное и максимальное значения mảngа nums.
2⃣Рассчитать потенциальные новые минимальные и максимальные значения после Applications операции.
3⃣Вычислить минимальную оценку, сравнивая разницу между всеми возможными новыми минимальными и максимальными значениями.
😎
Vacancies for this task
việc làm đang hoạt động with overlapping task tags are đã hiển thị.