2023-10-10 Daily Challenge
Today I have done leetcode's October LeetCoding Challenge with cpp
.
October LeetCoding Challenge 10
Description
Minimum Number of Operations to Make Array Continuous
You are given an integer array nums
. In one operation, you can replace any element in nums
with any integer.
nums
is considered continuous if both of the following conditions are fulfilled:
- All elements in
nums
are unique. - The difference between the maximum element and the minimum element in
nums
equalsnums.length - 1
.
For example, nums = [4, 2, 5, 3]
is continuous, but nums = [1, 2, 3, 5, 6]
is not continuous.
Return the minimum number of operations to make nums
continuous.
Example 1:
Input: nums = [4,2,5,3] Output: 0 Explanation: nums is already continuous.
Example 2:
Input: nums = [1,2,3,5,6] Output: 1 Explanation: One possible solution is to change the last element to 4. The resulting array is [1,2,3,5,4], which is continuous.
Example 3:
Input: nums = [1,10,100,1000] Output: 3 Explanation: One possible solution is to: - Change the second element to 2. - Change the third element to 3. - Change the fourth element to 4. The resulting array is [1,2,3,4], which is continuous.
Constraints:
1 <= nums.length <= 105
1 <= nums[i] <= 109
Solution
class Solution {
public:
int minOperations(vector<int>& nums) {
int sz = nums.size();
int answer = sz;
unordered_set<int> st;
for(auto n : nums) {
st.insert(n);
}
sort(nums.begin(), nums.end());
nums.resize(unique(nums.begin(), nums.end()) - nums.begin());
int pos = 0;
for(int i = 0; i < nums.size(); ++i) {
while(pos < nums.size() && nums[pos] < nums[i] + sz) {
pos += 1;
}
answer = min(answer, sz - pos + i);
}
return answer;
}
};
// Accepted
// 62/62 cases passed (250 ms)
// Your runtime beats 45.61 % of cpp submissions
// Your memory usage beats 41.84 % of cpp submissions (101.4 MB)