zoukankan      html  css  js  c++  java
  • [Swift]LeetCode674. 最长连续递增序列 | Longest Continuous Increasing Subsequence

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/10497242.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    Given an unsorted array of integers, find the length of longest continuous increasing subsequence (subarray).

    Example 1:

    Input: [1,3,5,4,7]
    Output: 3
    Explanation: The longest continuous increasing subsequence is [1,3,5], its length is 3. 
    Even though [1,3,5,7] is also an increasing subsequence, it's not a continuous one where 5 and 7 are separated by 4.  

    Example 2:

    Input: [2,2,2,2,2]
    Output: 1
    Explanation: The longest continuous increasing subsequence is [2], its length is 1.  

    Note: Length of the array will not exceed 10,000.


    给定一个未经排序的整数数组,找到最长且连续的的递增序列。

    示例 1:

    输入: [1,3,5,4,7]
    输出: 3
    解释: 最长连续递增序列是 [1,3,5], 长度为3。
    尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。 
    

    示例 2:

    输入: [2,2,2,2,2]
    输出: 1
    解释: 最长连续递增序列是 [2], 长度为1。
    

    注意:数组长度不会超过10000。


    Runtime: 68 ms
    Memory Usage: 19.1 MB
     1 class Solution {
     2     func findLengthOfLCIS(_ nums: [Int]) -> Int {
     3         if nums.count == 0 {
     4             return 0
     5         }
     6         if nums.count == 1 {
     7             return 1
     8         }
     9         var maxLength = 1
    10         var count = 1
    11         for i in 1..<nums.count {
    12             if nums[i] > nums[i - 1] {
    13                 count = count + 1
    14             } else {
    15                 count = 1
    16             }
    17             maxLength = max(maxLength, count)
    18         }
    19         return maxLength
    20     }
    21 }

    68ms

     1 class Solution {
     2     func findLengthOfLCIS(_ nums: [Int]) -> Int {
     3         var left = 0
     4         var right = 0
     5         var index = 0
     6         var result = 0
     7         
     8         while right < nums.count {
     9             while index < right {
    10                 if nums[index] >= nums[right] {
    11                     left = index + 1
    12                 }
    13                 index += 1
    14             }
    15             result = max(result, right-left+1)
    16             right += 1
    17         }
    18         return result
    19     }
    20 }

    72ms

     1 class Solution {
     2     func findLengthOfLCIS(_ nums: [Int]) -> Int {
     3         if nums.isEmpty {
     4             return 0
     5         }
     6         
     7         if nums.count == 1 {
     8             return 1
     9         }
    10         var count = 1
    11         var maxCount = count
    12         for i in 1...nums.count - 1 {
    13             if nums[i] > nums[i - 1] {
    14                 count += 1
    15             }
    16             else {
    17                 if count > maxCount {
    18                     maxCount = count
    19                 }
    20                 count = 1
    21             }
    22         }
    23         print(maxCount)
    24         return (maxCount > count ? maxCount : count)
    25     }
    26 }

    76ms

     1 class Solution {
     2     func findLengthOfLCIS(_ nums: [Int]) -> Int {
     3         var longest = 0
     4         var currentLength = 0
     5         for (i, num) in nums.enumerated() {
     6             if i > 0 && num > nums[i - 1] {
     7                 currentLength += 1
     8             } else {
     9                 currentLength = 1
    10             }
    11             longest = max(longest, currentLength)
    12         }
    13         return longest
    14     }
    15 }

    84ms

     1 class Solution {
     2     func findLengthOfLCIS(_ nums: [Int]) -> Int 
     3     {
     4         var temp_increasing_subsequence_length = 0
     5         var max_increasing_subsequence_length = 0
     6         
     7         guard nums.count >= 2 
     8         else
     9         {
    10             return nums.count
    11         }
    12         
    13         for i in 0...(nums.count - 2)
    14         {
    15             if (nums[i] < nums[i + 1])
    16             {
    17                 temp_increasing_subsequence_length += 1
    18             }
    19             else
    20             {
    21                 temp_increasing_subsequence_length = 0
    22             }
    23             
    24             max_increasing_subsequence_length = max(max_increasing_subsequence_length, temp_increasing_subsequence_length + 1)
    25         }
    26         
    27         return max_increasing_subsequence_length
    28     }
    29 }

    92ms

     1 class Solution {
     2     func findLengthOfLCIS(_ nums: [Int]) -> Int {
     3         var dp = [Int](repeating: 0, count: nums.count) 
     4         var res = 0
     5         for (i , n) in nums.enumerated() {
     6             if i == 0 {
     7                 dp[i] = 1
     8             }else if nums[i] > nums[i - 1]{
     9                 dp[i] = dp[i - 1] + 1
    10                 
    11             }else{
    12                 dp[i] = 1
    13             }
    14             res = max(res, dp[i])
    15         }
    16         return res
    17     }
    18 }

    104ms

     1 class Solution {
     2     func findLengthOfLCIS(_ nums: [Int]) -> Int {
     3   if(nums.isEmpty){
     4             return 0
     5         }
     6         if(nums.count == 1){
     7             return 1
     8         }
     9         
    10         var end:Int = 0
    11         var temp = 1
    12         var resultNum = 1
    13         
    14         for i in 1..<nums.count{
    15             if(nums[i] > nums[end]){
    16                 end = i
    17                 temp += 1
    18             }else{
    19                 resultNum = max(temp, resultNum);
    20                 temp = 1
    21                 end = i
    22             }
    23             
    24         }
    25         
    26         return max(temp, resultNum);
    27     }
    28 }
  • 相关阅读:
    2020杭电HDU-6756多校第一场Finding a MEX(图的分块)
    2020杭电HDU-6768多校第二场Lead of Wisdom(暴力DFS)
    牛客-Matrix(二维Hash-矩阵匹配)
    牛客-白兔的字符串(Hash+二分)
    2020杭电HDU-6768多校第二场The Oculus(假斐波那契数列真Hash)
    2020杭电HDU-6767多校第二场New Equipments(三分+费用流)
    使用 xmllint 验证 odoo xml文件
    odoo 的时差 坑
    请问如何突破”所选文件超出了文件的最大值设定:25.00 Mb“限制
    仓库打包作业超出分拣单数量时,发警报邮件
  • 原文地址:https://www.cnblogs.com/strengthen/p/10497242.html
Copyright © 2011-2022 走看看