LeetCode896 单调数列 golang实现

lucasgao · · 307 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

896. 单调数列

方法1

image.png

解题思路

  1. 先判断递增还是递减
  2. 然后再依次判断后续是否为单调

notice:

  1. 数据越界
  2. 前两个元素可能相等

代码

func isMonotonic(A []int) bool {
    i := 0
    up := false
    for ;i<len(A)-1;i++{
        if A[i]==A[i+1]{
            continue
        }
        if A[i]>A[i+1]{
            up = false
        }else{
            up = true
        }
        break
    }

    return isMonotonic2(A[i:],up)
}

func isMonotonic2(A []int,up bool)bool{
    if up{
        for i:=1;i<len(A);i++{
            if A[i]<A[i-1]{
                return false
            }
        }
    }else{
        for i:=1;i<len(A);i++{
            if A[i]>A[i-1]{
                return false
            }
        }
    }
    return true
}

方法2

第一种代码量比较多,第二种实现

解题思路

使用2个标志位,up ,down 分别标志数组是递增还是递减。
当数组是相等的时候,up 和down 均为true。

然后采用反向标记, 如果轮询到递增则 downfalse,反之亦然

代码

/**

*/
func isMonotonic(A []int) bool {
    up,down := true,true // 默认情况下,既是递增也是递减
    for i:=1;i<len(A);i++{
        if A[i]>A[i-1]{ // 后面的比前面的大,则一定不是递减
            down = false
        }else if A[i]<A[i-1]{ // 后面的比前面的小,则一定不是递增
            up = false
        }
    }
    return up || down
}


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:lucasgao

查看原文:LeetCode896 单调数列 golang实现

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

307 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传