未分類

Max Consecutive Ones

Max Consecutive Ones

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

For Example:

1
2
3
4
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
提示 解題應用
Array 規律觀查

Default:

1
2
3
func findMaxConsecutiveOnes(nums []int) int {
}

解答思路:

要從一陣列中找出最多連續出現1的次數,只要一邊遍歷一邊計算數量,當碰上0時就判斷是否大於先前出現的最大次數,如果是就取代原本的值然後將計數歸0重新開始計算,直到遍歷結束後做最後一次判斷計數器的值是否比較大,再來決定回傳的內容。

程式碼解說:

一開始就以一迴圈遍歷陣列,如果元素值為1就將計數+1,當發現該元素的值為0時,此時就要停止計算出現1的數量,然後判斷是否大於先前出現的最大次數,是的話就取代原本的值,將計數歸0後再繼續遍歷其它元素,最後當遍歷結束時要再做最後一次判斷計數器的值是否比較大,因為陣列的最後一個值有可能不為0,此時計數器中的值尚未與目前的最大值做比較,因此若計數器的值若比較大則將最大值做取代回傳,否則就直接回傳原本的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var max int
var count int
for _, v := range nums {
if v == 0 {
if count > max {
max = count
}
count = 0
continue
}
count++
}
if count > max {
max = count
}
return max

完整程式碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
func findMaxConsecutiveOnes(nums []int) int {
var max int
var count int
for _, v := range nums {
if v == 0 {
if count > max {
max = count
}
count = 0
continue
}
count++
}
if count > max {
max = count
}
return max
}

總結:

要從一陣列中找出最多連續出現1的次數,只要一邊遍歷一邊計算數量,當碰上0時就判斷是否大於先前出現的最大次數,如果是就取代原本的值然後將計數歸0重新開始計算,直到遍歷結束後做最後一次判斷計數器的值是否比較大,再來決定回傳的內容。

分享到