zoukankan      html  css  js  c++  java
  • leetcode 845

    山峰数组指, 先严格递增, 再严格递减的数组. 现给到一个数组, 找到一个连续子数组, 使得该子数组是山峰数组, 输出最长的该子数组的长度.

    要求只遍历一遍数组, 并且空间复杂度为O(1)

    想了10分钟知道怎么写, 写了40分钟才debug没问题, 提交了5次前后, 我觉得我是一个sb.

    class Solution:
        def longestMountain(self, arr: List[int]) -> int:
            result = 0
            if len(arr) <= 2:
                return 0
            result = 0
            first_index = 0
            pre_num = arr[0]
            left = 0
            sign = 0
            for i in range(1, len(arr)):
                # print(f"current index: {i}, sign = {sign}, left = {left}")
                current_num = arr[i]
                if pre_num < current_num:
                    if sign == 0:
                        pass
                    else:
                        tmp = i - 1 - left + 1
                        result = max(tmp, result)
                        
                        left = i - 1
                        sign = 0
                elif pre_num == current_num:
                    if sign == 0:
                        left = i
                    else:
                        
                        tmp = i - 1 - left + 1
                        result = max(tmp, result)
                        # print(left, i, tmp)
                        
                        left = i
                        sign = 0
                else:
                    if sign == 0:
                        if left == i - 1:
                            left = i
                        else:
                            sign = 1
                            
                            tmp = i - left + 1
                            result = max(tmp, result)
                            # print(left, i, tmp)
                    else:
                        tmp = i - left + 1
                        result = max(tmp, result)
                        # print(left, i, tmp)
    
                pre_num = current_num
            return result
    
  • 相关阅读:
    Java语法总结 线程
    Java多线程编程总结
    eclipse插件开发
    Java私塾的一些基础练习题(一)
    反射练习
    内部类实现动态链表(增,删,查,打印)
    oracle 存储过程第四天
    java 面向对象个人理解
    jsp的flash小例子
    oralcle 存储过程批处理
  • 原文地址:https://www.cnblogs.com/mangmangbiluo/p/15586720.html
Copyright © 2011-2022 走看看