LeetCode 1375. 二进制字符串前缀一致的次数

题目描述

1375. 二进制字符串前缀一致的次数

思路分析

解法一:前缀最大值(推荐)

核心思路

  • 记录当前已翻转位置的最大下标 maxPos
  • maxPos == i + 1 时,说明前 i+1 个位置都已翻转。
  • 统计满足条件的次数。


复杂度分析

  • 时间复杂度:O(n),其中 n 表示 flips 长度。
  • 空间复杂度:O(1)。
class Solution {
    public int numTimesAllBlue(int[] flips) {
        int maxPos = 0;
        int res = 0;

        for (int i = 0; i < flips.length; i++) {
            if (flips[i] > maxPos) {
                maxPos = flips[i];
            }
            if (maxPos == i + 1) {
                res++;
            }
        }

        return res;
    }
}
func numTimesAllBlue(flips []int) int {
	maxPos := 0
	res := 0

	for i, v := range flips {
		if v > maxPos {
			maxPos = v
		}
		if maxPos == i+1 {
			res++
		}
	}

	return res
}

相似题目

题目 难度 考察点
1375. 二进制字符串前缀一致的次数 中等 前缀统计
1893. 检查是否区域内所有整数都被覆盖 简单 前缀统计
525. 连续数组 中等 前缀和
930. 和相同的二元子数组 中等 前缀和
1423. 可获得的最大点数 中等 前缀/滑动窗口
本文作者:
本文链接: https://hgnulb.github.io/blog/2022/98843001
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!