zoukankan      html  css  js  c++  java
  • [Swift]LeetCode485. 最大连续1的个数 | Max Consecutive Ones

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

    Given a binary array, find the maximum number of consecutive 1s in this array.

    Example 1:

    Input: [1,1,0,1,1,1]
    Output: 3
    Explanation: The first two digits or the last three digits are consecutive 1s.
        The maximum number of consecutive 1s is 3. 

    Note:

    • The input array will only contain 0 and 1.
    • The length of input array is a positive integer and will not exceed 10,000

    给定一个二进制数组, 计算其中最大连续1的个数。

    示例 1:

    输入: [1,1,0,1,1,1]
    输出: 3
    解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.
    

    注意:

    • 输入的数组只包含 0 和1
    • 输入数组的长度是正整数,且不超过 10,000。

     56ms

     1 class Solution {
     2     func findMaxConsecutiveOnes(_ nums: [Int]) -> Int {
     3         if nums.count == 1 && nums[0] == 1{
     4             return 1
     5         }
     6         var count = 0
     7         var res = 0
     8         
     9         for i in 0..<nums.count {
    10            if(nums[i] == 1)  { count = count + 1 }//遇1则加
    11             if(count > res)  { res = count }//判断是否大于当前最大连续值
    12             if(nums[i] == 0)  { count = 0 }//遇0则置为0 
    13         }
    14         return res
    15     }
    16 }

    64ms

     1 class Solution {
     2     func findMaxConsecutiveOnes(_ nums: [Int]) -> Int {
     3         var count = 0
     4         var maxcount = 0
     5         for num in nums {
     6             if num == 1 {
     7                 count = count + 1
     8                 maxcount = max(count,maxcount)
     9             } else {
    10                 count = 0
    11             } 
    12         }
    13         
    14         return maxcount
    15     }
    16 }

    76ms

     1 class Solution {
     2     func findMaxConsecutiveOnes(_ nums: [Int]) -> Int {
     3         var res = 0
     4         var currentCount = 0
     5 
     6         for num in nums {
     7             if num == 1 {
     8                 currentCount += 1
     9             } else {
    10                 currentCount = 0
    11             }
    12             if currentCount > res {
    13                 res = currentCount
    14             }
    15         }
    16 
    17         return res
    18     }
    19 }

    80ms

     1 class Solution {
     2     func findMaxConsecutiveOnes(_ nums: [Int]) -> Int {
     3         var result: Int = 0
     4         var count: Int = 0
     5         for num in nums {
     6             if num != 1{
     7                 if count > result{
     8                     result = count
     9                 }
    10                 count = 0
    11             }else{
    12                 count += 1
    13             }
    14         }
    15         return max(count, result)
    16     }
    17 }

    312ms
     1 class Solution {
     2     func findMaxConsecutiveOnes(_ nums: [Int]) -> Int {
     3         var start = -1
     4         var maxLength = 0
     5         
     6         for i in 0 ..< nums.count {
     7             switch (nums[i], start) {
     8             case (1, -1):
     9                 start = i
    10             case (1, _), (0, -1):
    11                 break
    12             case (0, _):
    13                 maxLength = max(maxLength, i - start)
    14                 start = -1
    15             default:
    16                 break
    17             }
    18         }
    19         
    20         if start >= 0 {
    21             maxLength = max(maxLength, nums.count - start)
    22         }
    23         
    24         return maxLength
    25     }
    26 }

    Runtime: 328 ms

    Memory Usage: 19.2 MB
     1 class Solution {
     2     func findMaxConsecutiveOnes(_ nums: [Int]) -> Int {
     3         var count = 0
     4         var returnNum = 0
     5         
     6         for num in nums {
     7             count = (count + 1) * num
     8             returnNum = max(returnNum, count)
     9         }
    10         
    11         return returnNum       
    12     }
    13 }
  • 相关阅读:
    mysql 函数 存储过程 事件(event) job 模板
    protobuf 无proto 解码 decode 语言 java python
    mitmproxy fiddler 抓包 填坑
    android adb 常用命令
    android机器人 模拟 踩坑过程
    RabbitMQ添加新用户并支持远程访问
    Windows下RabbitMQ安装及配置
    Java mybatis mysql 常用数据类型对应关系
    easyExcel 踩坑
    linux防火墙查看状态firewall、iptable
  • 原文地址:https://www.cnblogs.com/strengthen/p/10465918.html
Copyright © 2011-2022 走看看