zoukankan      html  css  js  c++  java
  • lincode 题目记录6

    the Duplicate Number  132 PatternFind

    找重复的数字··直接暴力枚举是不行的···又超时提示··

    暴力枚举的写法·

       res=0
        def findDuplicate(self, nums):
            # Write your code here
          #或者这么写
        #for i in range(len(nums)):
              # if nums[i] in nums[i+1:]:return nums[i]
            def findmid(arr):
                if len(arr)<=1:return
                global res
                mid=arr[0]
                low=[]
                high=[]
                for i in range(1,len(arr)):
                    if arr[i]>mid:
                        high.append(arr[i])
                    elif(arr[i]<mid):low.append(arr[i])
                    else:
                        res=mid
                        return
                findmid(low)
                findmid(high)
    
            findmid(nums)
            return res

    python的闭包写法有点怪··这里用了一个全局变量来实现闭包,也可以在外边函数里边声明res 嵌套函数里边用nonlobal,但是lintcode的编译器好像不识别这个···或者直接用list···

    这个写法会提示超时··而且也不满足题目要求··题目要求空间复杂度是O(1),这个新建数组了··

    后来在网上查了下注意到题目里边说了·一定有n+1个数字··然后范围在1到n

        def findDuplicate(self, nums):
            # Write your code here
            min=0
            max=len(nums)-1
            while(min<max):
                mid=(min+max)//2
                cnt=0
                for i in nums:
                    if i<=mid:
                        cnt+=1
                if cnt>mid:
                    max=mid
                else:
                    min=mid+1
            return min 

     132 PatternFind

    直接遍历是不行的·就算设置了条件优化也不行····会超时·· 这个用栈的方法 有点流弊···逆序遍历取第二大的值为基准做对比·,这里second的初始值取-1000000,

    class Solution:
        # @param {int[]} nums a list of n integers
        # @return {boolean} true if there is a 132 pattern or false
        def find132pattern(self, nums):
            # Write your code here
            second = -1000000   
            st = []
            for num in nums[::-1]:
                if num<second:
                    return True
                while st and num>st[-1]:
                    second=st.pop()
                st.append(num)
            return False
  • 相关阅读:
    css3阴影效果
    应该了解的9种CSS技巧
    position
    MyEclipse设置Java代码注释模板
    Struts2 常用的常量配置
    CSS 中文字体对应英文和Unicode编码
    MyEclipse使用前优化与配置
    MyEclipse 快捷键收集
    Ajax 调用WebServices之一 基本应用
    C#控制台显示进度条
  • 原文地址:https://www.cnblogs.com/onegarden/p/7209503.html
Copyright © 2011-2022 走看看