From bf72af555770629720730a043fa233f3c045579c Mon Sep 17 00:00:00 2001 From: Hao Chen Date: Tue, 20 Apr 2021 18:21:28 +0800 Subject: [PATCH] New Problem Solution - "1827. Minimum Operations to Make the Array Increasing" --- README.md | 1 + ...imumOperationsToMakeTheArrayIncreasing.cpp | 57 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 algorithms/cpp/minimumOperationsToMakeTheArrayIncreasing/MinimumOperationsToMakeTheArrayIncreasing.cpp diff --git a/README.md b/README.md index deab9f44f..0a1a2293f 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ LeetCode | # | Title | Solution | Difficulty | |---| ----- | -------- | ---------- | +|1827|[Minimum Operations to Make the Array Increasing](https://leetcode.com/problems/minimum-operations-to-make-the-array-increasing/) | [C++](./algorithms/cpp/minimumOperationsToMakeTheArrayIncreasing/MinimumOperationsToMakeTheArrayIncreasing.cpp)|Easy| |1825|[Finding MK Average](https://leetcode.com/problems/finding-mk-average/) | [C++](./algorithms/cpp/findingMkAverage/FindingMkAverage.cpp)|Hard| |1824|[Minimum Sideway Jumps](https://leetcode.com/problems/minimum-sideway-jumps/) | [C++](./algorithms/cpp/minimumSidewayJumps/MinimumSidewayJumps.cpp)|Medium| |1823|[Find the Winner of the Circular Game](https://leetcode.com/problems/find-the-winner-of-the-circular-game/) | [C++](./algorithms/cpp/findTheWinnerOfTheCircularGame/FindTheWinnerOfTheCircularGame.cpp)|Medium| diff --git a/algorithms/cpp/minimumOperationsToMakeTheArrayIncreasing/MinimumOperationsToMakeTheArrayIncreasing.cpp b/algorithms/cpp/minimumOperationsToMakeTheArrayIncreasing/MinimumOperationsToMakeTheArrayIncreasing.cpp new file mode 100644 index 000000000..33a42decf --- /dev/null +++ b/algorithms/cpp/minimumOperationsToMakeTheArrayIncreasing/MinimumOperationsToMakeTheArrayIncreasing.cpp @@ -0,0 +1,57 @@ +// Source : https://leetcode.com/problems/minimum-operations-to-make-the-array-increasing/ +// Author : Hao Chen +// Date : 2021-04-20 + +/***************************************************************************************************** + * + * You are given an integer array nums (0-indexed). In one operation, you can choose an element of the + * array and increment it by 1. + * + * For example, if nums = [1,2,3], you can choose to increment nums[1] to make nums = [1,3,3]. + * + * Return the minimum number of operations needed to make nums strictly increasing. + * + * An array nums is strictly increasing if nums[i] < nums[i+1] for all 0 <= i < nums.length - 1. An + * array of length 1 is trivially strictly increasing. + * + * Example 1: + * + * Input: nums = [1,1,1] + * Output: 3 + * Explanation: You can do the following operations: + * 1) Increment nums[2], so nums becomes [1,1,2]. + * 2) Increment nums[1], so nums becomes [1,2,2]. + * 3) Increment nums[2], so nums becomes [1,2,3]. + * + * Example 2: + * + * Input: nums = [1,5,2,4,1] + * Output: 14 + * + * Example 3: + * + * Input: nums = [8] + * Output: 0 + * + * Constraints: + * + * 1 <= nums.length <= 5000 + * 1 <= nums[i] <= 10^4 + ******************************************************************************************************/ + +class Solution { +public: + int minOperations(vector& nums) { + int ins = 0; + int top = nums[0]; + for(int i = 1; i < nums.size(); i++) { + if (nums[i] > top){ + top = nums[i]; + }else{ + ins += (top - nums[i] + 1); + top++; + } + } + return ins; + } +};