在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Given a fixed length array Note that elements beyond the length of the original array are not written. Do the above modifications to the input array in place, do not return anything from your function. Example 1: Input: [1,0,2,3,0,4,5,0]
Output: null
Explanation: After calling your function, the input array is modified to: [1,0,0,2,3,0,0,4]
Example 2: Input: [1,2,3]
Output: null
Explanation: After calling your function, the input array is modified to: [1,2,3]
Note:
给你一个长度固定的整数数组 注意:请不要在超过该数组长度的位置写入元素。 要求:请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。 示例 1: 输入:[1,0,2,3,0,4,5,0] 输出:null 解释:调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4] 示例 2: 输入:[1,2,3] 输出:null 解释:调用函数后,输入的数组将被修改为:[1,2,3] 提示:
Runtime: 40 ms
Memory Usage: 21.1 MB
1 class Solution { 2 func duplicateZeros(_ arr: inout [Int]) { 3 var n:Int = arr.count 4 var a:[Int] = arr 5 var p:Int = 0 6 for i in 0..<n 7 { 8 if a[i] == 0 9 { 10 if p < n 11 { 12 arr[p] = 0 13 p += 1 14 } 15 if p < n 16 { 17 arr[p] = 0 18 p += 1 19 } 20 } 21 else 22 { 23 if p < n 24 { 25 arr[p] = a[i] 26 p += 1 27 } 28 } 29 } 30 31 } 32 } 44ms
1 class Solution { 2 func duplicateZeros(_ arr: inout [Int]) { 3 let c = arr.count 4 if c <= 1 { return } 5 6 var i = 0 7 while i < c { 8 if arr[i] == 0 { 9 arr.insert(0, at: i) 10 i += 2 11 } else { 12 i += 1 13 } 14 } 15 while arr.count > c { 16 _ = arr.popLast() 17 } 18 } 19 } 48ms 1 class Solution { 2 func duplicateZeros(_ arr: inout [Int]) { 3 var count = 0 4 for (index, value) in arr.enumerated() { 5 if value == 0 { 6 count += 1 7 } 8 } 9 var index = arr.count - 1 10 while index >= 0 { 11 let value = arr[index] 12 if index + count < arr.count { 13 arr[index + count] = value 14 } 15 if value == 0 { 16 count -= 1 17 if index + count < arr.count { 18 arr[index + count] = 0 19 } 20 } 21 index -= 1 22 } 23 } 24 }
|
请发表评论