From b85cc6d1ea6b4726460051dcb056f6aa5c02f979 Mon Sep 17 00:00:00 2001 From: Hao Chen Date: Mon, 3 May 2021 12:15:06 +0800 Subject: [PATCH] New Problem Solution - "1846. Maximum Element After Decreasing and Rearranging" --- README.md | 1 + ...umElementAfterDecreasingAndRearranging.cpp | 70 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 algorithms/cpp/maximumElementAfterDecreasingAndRearranging/MaximumElementAfterDecreasingAndRearranging.cpp diff --git a/README.md b/README.md index 43857542f..bd6ad41fa 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ LeetCode | # | Title | Solution | Difficulty | |---| ----- | -------- | ---------- | +|1846|[Maximum Element After Decreasing and Rearranging](https://leetcode.com/problems/maximum-element-after-decreasing-and-rearranging/) | [C++](./algorithms/cpp/maximumElementAfterDecreasingAndRearranging/MaximumElementAfterDecreasingAndRearranging.cpp)|Medium| |1845|[Seat Reservation Manager](https://leetcode.com/problems/seat-reservation-manager/) | [C++](./algorithms/cpp/seatReservationManager/SeatReservationManager.cpp)|Medium| |1844|[Replace All Digits with Characters](https://leetcode.com/problems/replace-all-digits-with-characters/) | [C++](./algorithms/cpp/replaceAllDigitsWithCharacters/ReplaceAllDigitsWithCharacters.cpp)|Easy| |1840|[Maximum Building Height](https://leetcode.com/problems/maximum-building-height/) | [C++](./algorithms/cpp/maximumBuildingHeight/MaximumBuildingHeight.cpp)|Hard| diff --git a/algorithms/cpp/maximumElementAfterDecreasingAndRearranging/MaximumElementAfterDecreasingAndRearranging.cpp b/algorithms/cpp/maximumElementAfterDecreasingAndRearranging/MaximumElementAfterDecreasingAndRearranging.cpp new file mode 100644 index 000000000..e79b1bf6f --- /dev/null +++ b/algorithms/cpp/maximumElementAfterDecreasingAndRearranging/MaximumElementAfterDecreasingAndRearranging.cpp @@ -0,0 +1,70 @@ +// Source : https://leetcode.com/problems/maximum-element-after-decreasing-and-rearranging/ +// Author : Hao Chen +// Date : 2021-05-03 + +/***************************************************************************************************** + * + * You are given an array of positive integers arr. Perform some operations (possibly none) on arr so + * that it satisfies these conditions: + * + * The value of the first element in arr must be 1. + * The absolute difference between any 2 adjacent elements must be less than or equal to 1. In + * other words, abs(arr[i] - arr[i - 1]) <= 1 for each i where 1 <= i < arr.length (0-indexed). abs(x) + * is the absolute value of x. + * + * There are 2 types of operations that you can perform any number of times: + * + * Decrease the value of any element of arr to a smaller positive integer. + * Rearrange the elements of arr to be in any order. + * + * Return the maximum possible value of an element in arr after performing the operations to satisfy + * the conditions. + * + * Example 1: + * + * Input: arr = [2,2,1,2,1] + * Output: 2 + * Explanation: + * We can satisfy the conditions by rearranging arr so it becomes [1,2,2,2,1]. + * The largest element in arr is 2. + * + * Example 2: + * + * Input: arr = [100,1,1000] + * Output: 3 + * Explanation: + * One possible way to satisfy the conditions is by doing the following: + * 1. Rearrange arr so it becomes [1,100,1000]. + * 2. Decrease the value of the second element to 2. + * 3. Decrease the value of the third element to 3. + * Now arr = [1,2,3], which satisfies the conditions. + * The largest element in arr is 3. + * + * Example 3: + * + * Input: arr = [1,2,3,4,5] + * Output: 5 + * Explanation: The array already satisfies the conditions, and the largest element is 5. + * + * Constraints: + * + * 1 <= arr.length <= 10^5 + * 1 <= arr[i] <= 10^9 + ******************************************************************************************************/ + +class Solution { +public: + int maximumElementAfterDecrementingAndRearranging(vector& arr) { + sort(arr.begin(), arr.end()); + int m = arr[0] = 1; + for(int i=0; i