首页 > 其他 > 详细

Non-decreasing Array

时间:2017-09-17 23:12:46      阅读:312      评论:0      收藏:0      [点我收藏+]

    这道题为简单题,但是做的过程中忽略了一些特殊情况,最后还是做出来了,怪说不得这道题的通过率才21%左右

  题目:

    技术分享

  思路:

    我设置了两个变量,prev代表上一个元素,prev_prev代表上上个元素,代码的大致思路就是如果有两次(因为我把两个值设置为无穷小,所以第一次num就是自动加1,但是这一次不算)该元素比上一个prev小,那么就返回False,否则True,在这个过程中最难的就是第一次出现的时候如何改变prev和prev_prev的值。如果上上个元素小于i,那么就把上个和上上个元素都变为i,prev_prev == float(‘Inf’) 这个条件是由于当时没考虑到长度小于3时才加的,其他情况就把上个和上上个元素都变为i元素的上个元素值

 

  代码:

class Solution(object):
    def checkPossibility(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        prev_prev = float(inf)
        prev = float(inf)
        num = 0
        for i in nums:
            if i < prev: 
                num += 1
                if num == 1: prev = i
            else: 
                prev_prev = prev
                prev = i
            if num == 2: 
                if prev_prev == float(inf) or prev_prev <= i: 
                    prev_prev = i
                    prev = i
                else: 
                    prev_prev = prev
            if num == 3:
                return False
        return True

 

    

Non-decreasing Array

原文:http://www.cnblogs.com/liuxinzhi/p/7538426.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!