首頁>技術>

題目

給定一個二進位制陣列, 找到含有相同數量的 0 和 1 的最長連續子陣列(的長度)。

示例 1:輸入: [0,1] 輸出: 2

說明: [0, 1] 是具有相同數量0和1的最長連續子陣列。

示例 2:輸入: [0,1,0] 輸出: 2

說明: [0, 1] (或 [1, 0]) 是具有相同數量0和1的最長連續子陣列。

注意: 給定的二進位制陣列的長度不會超過50000。

解題思路分析

1、字首和;時間複雜度O(n),空間複雜度O(n)

func findMaxLength(nums []int) int {	res := 0	m := make(map[int]int)	m[0] = -1	total := 0	for i := 0; i < len(nums); i++ {		if nums[i] == 0 {			total--		} else {			total++		}		if first, ok := m[total]; !ok {			m[total] = i		} else {			if i-first > res {				res = i - first			}		}	}	return res}
總結

Medium題目,字首和問題

19
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 「Java」PDF文件格式轉換之PDF轉tiff