[Swift]LeetCode228. 汇总区间 | Summary Ranges

[Swift]LeetCode228. 汇总区间 | Summary Ranges,第1张

概述Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: [0,1,2,4,5,7]Output: ["0->2","4->5","7"]Explanation: 0,1,2 form a continuous range; 4,5 form a

Given a sorted integer array without duplicates,return the summary of its ranges.

Example 1:

input:  [0,1,2,4,5,7]Output: ["0->2","4->5","7"]Explanation: 0,2 form a continuous range; 4,5 form a continuous range.

Example 2:

input:  [0,3,6,8,9]Output: ["0","2->4","6","8->9"]Explanation: 2,4 form a continuous range; 8,9 form a continuous range.

给定一个无重复元素的有序整数数组,返回数组区间范围的汇总

示例 1:

输入: [0,7]输出: ["0->2","7"]解释: 0,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。

示例 2:

输入: [0,9]输出: ["0","8->9"]解释: 2,4 可组成一个连续的区间; 8,9 可组成一个连续的区间。
8ms
 1 class Solution { 2     func summaryRanges(_ nums: [Int]) -> [String] { 3          4         var resultArr = [String]() 5         var tempValue = 0 6         for (index,value) in nums.enumerated() { 7             var tempStr = "\(value)" 8             if index == 0 { 9                 tempValue = value10                 resultArr.append(tempStr)11             }else{12                 if value == nums[index - 1] + 1 {13                     tempStr = "\(tempValue)->\(value)"14                     resultArr.removeLast()15                     resultArr.append(tempStr)16                 }else{17                     tempValue = value18                     resultArr.append(tempStr)19                 }20             }21             22         }23         return resultArr24     }25 }

8ms

 1 class Solution { 2     func summaryRanges(_ nums: [Int]) -> [String] { 3         if nums.count < 1 { 4             return [] 5         } 6         var ans = [String]() 7         var first = nums[0] 8         var lastV = first 9         for i in 1..<nums.count {10             let cv = nums[i]11             if cv - lastV > 1 {12                 let str = (lastV == first) ? "\(first)" : "\(first)->\(lastV)"13                 ans.append(str)14                 first = cv15             }16             lastV = cv17         }18         let str = (lastV == first) ? "\(first)" : "\(first)->\(lastV)"19         ans.append(str)20         return ans21     }22 }

12ms

 1 class Solution { 2     func summaryRanges(_ nums: [Int]) -> [String] { 3 let n = nums.count 4     if n == 0 { 5         return [String]() 6     } 7     if n == 1 { 8         return ["\(nums[0])"] 9     }10     var temp = [String]()11     var start = 012     var i = 013     while i < n - 1 {14         if nums[i] == nums[i + 1] - 1 {15             i += 116             if i == n - 1 {17                 temp.append("\(nums[start])->\(nums[i])")18             }19             continue20         }21         if start == i {22             temp.append("\(nums[start])")23         } else {24             temp.append("\(nums[start])->\(nums[i])")25         }26         i += 127         start = i28         if i == n - 1 {29             temp.append("\(nums[start])")30         }31     }32     return temp33     }34 }

12ms

 1 class Solution { 2     func summaryRanges(_ nums: [Int]) -> [String] { 3         if nums.isEmpty { 4             return [] 5         } 6         var res = [String]() 7          8         var tmp = [nums[0]] 9         10         for i in 1..<nums.count {11             let num = nums[i]12             if num == tmp.last! + 1 {13                 tmp.append(num)14             }else {15                 if tmp.count == 1 {16                     res.append("\(tmp[0])")17                 }else {18                     res.append("\(tmp[0])->\(tmp.last!)")19                 }20                 tmp.removeAll()21                 tmp.append(num)22             }23         }24         if tmp.count == 1 {25             res.append("\(tmp[0])")26         }else {27             res.append("\(tmp[0])->\(tmp.last!)")28         }29         30         return res31     }32 }

16ms

 1 class Solution { 2     func summaryRanges(_ nums: [Int]) -> [String] { 3         var result = [String]() 4         guard nums.count > 0 else { return result } 5         if nums.count == 1 { return ["\(nums[0])"] } 6         var start = nums[0] 7         var end = nums[0] 8         for i in 1 ..< nums.count { 9             let current = nums[i]10             if current != end + 1 {11                 if start == end {12                     result.append("\(start)")13                 } else {14                     result.append("\(start)->\(end)")15                 }16                 start = current17                 end = current18             } else {19                 end = current20             }21         }22         if start == end {23                 result.append("\(start)")24         } else {25             result.append("\(start)->\(end)")26         }27         return result28     }29 }

104ms

 1 class Solution { 2     func summaryRanges(_ nums: [Int]) -> [String] { 3         var res = [String]() 4         var str = "" 5         var start = 0 6          7         guard nums.count > 0 else { 8             return res 9         }10         11         for i in 0 ... nums.count {12             if i == nums.count || (i > 0 && nums[i] != nums[i - 1] + 1) {13                 str = "\(nums[start])"14                 if i - 1 != start {15                     str += "->\(nums[i - 1])"16                 }17                 res.append(str)18                 start = i19             }20         }21         22         return res23     }24 }
总结

以上是内存溢出为你收集整理的[Swift]LeetCode228. 汇总区间 | Summary Ranges全部内容,希望文章能够帮你解决[Swift]LeetCode228. 汇总区间 | Summary Ranges所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1021833.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存