在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Given an array An array
Return the minimum number of moves to transform the given array Example 1: Input: nums = [1,2,3] Output: 2 Explanation: We can decrease 2 to 0 or 3 to 1. Example 2: Input: nums = [9,6,1,6,2] Output: 4 Constraints:
给你一个整数数组 如果符合下列情况之一,则数组
返回将数组 示例 1: 输入:nums = [1,2,3] 输出:2 解释:我们可以把 2 递减到 0,或把 3 递减到 1。 示例 2: 输入:nums = [9,6,1,6,2] 输出:4 提示:
4ms
1 class Solution { 2 func movesToMakeZigzag(_ nums: [Int]) -> Int { 3 if nums.count < 3 { 4 return 0 5 } 6 7 let n = nums.count 8 var result1 = 0 9 var result2 = 0 10 11 var i = 1 12 while i < n { 13 var minValue = min(nums[i-1], i+1 < n ? nums[i+1] : 1000) 14 if minValue <= nums[i] { 15 result1 += (nums[i]-minValue+1) 16 } 17 i += 2 18 } 19 20 i = 0 21 while i < n { 22 var minValue = min(i > 0 ? nums[i-1] : 1000, i+1 < n ? nums[i+1] : 1000) 23 if minValue <= nums[i] { 24 result2 += (nums[i]-minValue+1) 25 } 26 i += 2 27 } 28 29 return min(result1, result2) 30 } 31 } 8ms 1 class Solution { 2 func movesToMakeZigzag(_ nums: [Int]) -> Int { 3 var result = [0, 0] 4 let n = nums.count 5 var left = 0 6 var right = nums.count - 1 7 8 for i in 0..<n { 9 left = i > 0 ? nums[i-1] : 1001 10 right = i + 1 < n ? nums[i+1] : 1001 11 result[i%2] += max(0, nums[i] - min(left, right) + 1) 12 } 13 return result.min()! 14 } 15 } Runtime: 8 ms Memory Usage: 20.8 MB
1 class Solution { 2 func movesToMakeZigzag(_ nums: [Int]) -> Int { 3 var n:Int = nums.count 4 var j:Int = 0 5 var s:Int = 0 6 var t:Int = 0 7 for i in stride(from:0,to:n,by:2) 8 { 9 j = 0 10 if i != 0 11 { 12 j = max(j,nums[i]-nums[i-1]+1) 13 } 14 if i + 1 < n 15 { 16 j = max(j,nums[i]-nums[i+1]+1) 17 } 18 s += j 19 } 20 for i in stride(from:1,to:n,by:2) 21 { 22 j = 0 23 if i != 0 24 { 25 j = max(j,nums[i]-nums[i-1]+1) 26 } 27 if i + 1 < n 28 { 29 j = max(j,nums[i]-nums[i+1]+1) 30 } 31 t += j 32 } 33 return min(s,t) 34 } 35 } 12ms
1 class Solution { 2 func movesToMakeZigzag(_ nums: [Int]) -> Int { 3 var movesA = 0 4 var movesB = 0 5 var array = nums 6 for i in stride(from: 1, to: array.count, by: 2) { 7 while array[i - 1] <= array[i] { 8 movesA += 1 9 array[i] -= 1 10 } 11 12 guard (i + 1) < array.count else { break } 13 14 while array[i + 1] <= array[i] { 15 movesA += 1 16 array[i] -= 1 17 } 18 } 19 array = nums 20 for i in stride(from: 1, to: array.count, by: 2) { 21 while array[i - 1] >= array[i] { 22 movesB += 1 23 array[i - 1] -= 1 24 } 25 26 guard (i + 1) < array.count else { break } 27 28 while array[i + 1] >= array[i] { 29 movesB += 1 30 array[i + 1] -= 1 31 } 32 } 33 34 return movesA < movesB ? movesA : movesB 35 } 36 }
|
请发表评论