golang力扣leetcode 2100.适合打劫银行的日子

2100.适合打劫银行的日子

题解

简单题

第 i 天前和后都分别至少有 time 天。left[i] >= time && right[i] >= time 第 i 天前连续 time 天警卫数目都是非递增的。security[i] <= security[i-1] 第 i 天后连续 time 天警卫数目都是非递减的。security[i] <= security[i+1]

代码

package main

func goodDaysToRobBank(security []int, time int) (ans []int) {
          
   
	left := make([]int, len(security))
	right := make([]int, len(security))
	for i := 1; i < len(security); i++ {
          
   
		if security[i] <= security[i-1] {
          
   
			left[i] = left[i-1] + 1
		}
	}
	for i := len(security) - 1 - 1; i >= 0; i-- {
          
   
		if security[i] <= security[i+1] {
          
   
			right[i] = right[i+1] + 1
		}
	}
	for i := time; i <= len(security)-1-time; i++ {
          
   
		if left[i] >= time && right[i] >= time {
          
   
			ans = append(ans, i)
		}
	}
	return
}
经验分享 程序员 微信小程序 职场和发展