2025-04-16:找到稳定山的下标。用go语言,给定一个整数数组 height,表示一列山的高度,其中 height[i] 表示第 i 座山的高度,还有一个

2025-04-16:找到稳定山的下标。用go语言,给定一个整数数组 height,表示一列山的高度,其中 heighti 表示第 i 座山的高度,还有一个整数 threshold。我们定义一个山为"稳定"的条件是:对于每座下标不为 0 的山,如果它左侧相邻的山的高度严格大于 threshold,那么这座山就是稳定的。而下标为 0 的山永远被认为不稳定。

请你返回一个数组,包含所有稳定山的下标,顺序可以任意。

2 <= n == height.length <= 100。

1 <= heighti <= 100。

1 <= threshold <= 100。

输入:height = 1,2,3,4,5, threshold = 2。

输出:3,4

解释:

下标为 3 的山是稳定的,因为 height2 == 3 大于 threshold == 2 。

下标为 4 的山是稳定的,因为 height3 == 4 大于 threshold == 2。

题目来自leetcode3285。

以下是根据你提供的代码和题目描述,详细的步骤过程:

过程描述

  1. 输入数据

    • 接收一组整数数组 height,表示各座山的高度。
    • 接收一个整数 threshold,用于判断相邻山的高度是否超过这个阈值。
  2. 初始化结果数组

    • 创建一个空数组 result,用于存储所有稳定山的下标。
  3. 遍历山的高度

    • 从数组的第二个元素开始(即下标为 1),遍历到数组的最后一个元素。根据题目条件,下标为 0 的山不被考虑为稳定山。
  4. 判断稳定性的条件

    • 对于每个下标 i(从 1 到 n-1):
      • 检查其左侧相邻的山,即 height[i-1],是否严格大于 threshold
      • 如果条件满足(即 height[i-1] > threshold),则将当前山的下标 i 添加到 result 数组中。
  5. 返回结果

    • 遍历完成后,返回 result 数组,即包含所有稳定山下标的数组。

复杂度分析

  • 时间复杂度

    • 遍历数组的时间复杂度为 O(n),其中 n 是 height 数组的长度。由于只进行了一次线性遍历,所以时间复杂度为 O(n)。
  • 空间复杂度

    • 额外空间复杂度分析:
      • 用于存储结果的 result 数组的空间复杂度为 O(m),其中 m 是稳定山的数量。在最坏情况下,如果所有山都是稳定的,m 与 n 可能相等,因此空间复杂度为 O(n)。但在大部分情况下,m 会小于 n。因此总的空间复杂度为 O(m),较常规情况下可以认为是 O(n)。

综合以上分析,时间复杂度为 O(n),额外空间复杂度为 O(m)(在某些情况下可视为 O(n))。

Go完整代码如下:

go 复制代码
package main

import (
	"fmt"
)

func stableMountains(height []int, threshold int) []int {
	var result []int
	for i := 1; i < len(height); i++ {
		if height[i-1] > threshold {
			result = append(result, i)
		}
	}
	return result
}

func main() {
	height := []int{1, 2, 3, 4, 5}
	threshold := 2
	results := stableMountains(height, threshold)
	fmt.Println(results)
}

Python完整代码如下:

python 复制代码
# -*-coding:utf-8-*-

def stable_mountains(height, threshold):
    result = []
    for i in range(1, len(height)):
        if height[i - 1] > threshold:
            result.append(i)
    return result

if __name__ == "__main__":
    height = [1, 2, 3, 4, 5]
    threshold = 2
    results = stable_mountains(height, threshold)
    print(results)
相关推荐
SomeB1oody24 分钟前
【RustyML入门】7.4. 按需裁剪与模块化集成
开发语言·后端·机器学习·rust·教程
罗超驿27 分钟前
SpringBoot 快速入门
java·spring boot·后端
卷无止境1 小时前
除了开发api,FastAPI其实也可以配合jinja2模板写页面
后端·python·fastapi
newerp1 小时前
Redis 操作与缓存策略
后端·程序员·go
newerp1 小时前
GORM ORM 基础
后端·程序员·go
小岛前端1 小时前
AI Skills 已经封神,但新的问题却越来越严重!
前端·后端·github
拖孩1 小时前
一个人 + AI 做的小程序,上线 15 天赚了 10 块 5
前端·后端·微信小程序
newerp1 小时前
CRUD 操作与预处理语句
后端·程序员·go
wei_shuo2 小时前
KES 数据同步与ETL实战:数据集成、转换与实时同步方案
后端
乒乓狂魔14786739970002 小时前
LangGraph:用一张图,编排一群 AI 助手
后端