Skip to content

Latest commit

 

History

History
97 lines (61 loc) · 2.45 KB

File metadata and controls

97 lines (61 loc) · 2.45 KB

English Version

题目描述

给你一个下标从 0 开始的整数数组 nums 。在一步操作中,你可以:

  • 在范围 0 <= i < nums.length 内选出一个下标 i
  • nums[i] 的值变为 nums[i] + 1 nums[i] - 1

返回将数组 nums 变为 非递增 非递减 所需的 最小 操作次数。

 

示例 1:

输入:nums = [3,2,4,5,0]
输出:4
解释:
一种可行的操作顺序,能够将 nums 变为非递增排列:
- nums[1] 加 1 一次,使其变为 3 。
- nums[2] 减 1 一次,使其变为 3 。
- nums[3] 减 1 两次,使其变为 3 。
经过 4 次操作后,nums 变为 [3,3,3,3,0] ,按非递增顺序排列。
注意,也可以用 4 步操作将 nums 变为 [4,4,4,4,0] ,同样满足题目要求。
可以证明最少需要 4 步操作才能将数组变为非递增或非递减排列。

示例 2:

输入:nums = [2,2,3,4]
输出:0
解释:数组已经是按非递减顺序排列了,无需执行任何操作,返回 0 。

示例 3:

输入:nums = [0]
输出:0
解释:数组已经是按非递减顺序排列了,无需执行任何操作,返回 0 。

 

提示:

  • 1 <= nums.length <= 1000
  • 0 <= nums[i] <= 1000

 

进阶:你可以设计并实现时间复杂度为 O(n*log(n)) 的解法吗?

解法

Python3

Java

TypeScript

...