美文网首页
2018-10-18剑指offer

2018-10-18剑指offer

作者: 洋洋哥法力无边 | 来源:发表于2018-10-18 17:28 被阅读0次

leetcode不同路径二

class Solution(object):

    def uniquePathsWithObstacles(self, obstacleGrid):

        m=len(obstacleGrid)

        n=len(obstacleGrid[0])

        if m==0 and n==0:

            return 0

        dp=[[0 for i in range(n)] for k in range(m)]

        for i in range(m):

            for j in range(n):

                if obstacleGrid[i][j]==1:

                    dp[i][j]=0

                elif i==0 and j==0:

                    dp[i][j]=1

                elif i==0:

                    dp[0][j]=dp[0][j-1]

                elif j==0:

                    dp[i][0]=dp[i-1][0]

                else:

                    dp[i][j]=dp[i-1][j]+dp[i][j-1]

        return dp[-1][-1]

if __name__ == '__main__':

    s1=[[0,0]]

    s=Solution()

    print(s.uniquePathsWithObstacles(s1))

不同路径一

class Solution(object):

    def uniquePaths(self, m, n):

        if m==1 or n==1:

            return 1

        dp = [[1 for i in range(m)] for k in range(n)]

        for i in range(n):

            for j in range(m):

                dp[i][j]=dp[i-1][j]+dp[i][j-1]

        return dp[-1][-1]

if __name__ == '__main__':

    S=Solution()

    print(S.uniquePaths(7,2))

最小的组合数

from itertools import permutations

class Solution:

    def PrintMinNumber(self, numbers):

        if numbers is None or len(numbers) <=0:

            return ''

        n=len(numbers)

        l1=list(permutations(numbers,len(numbers)))

        l2=[]

        for i in l1:

          tmp=''

          for each in i:

              tmp=tmp+str(each)

          l2.append(tmp)

        l3 = [int(i) for i in l2]

        return min(l3)

if __name__ == '__main__':

    l=[3,32,321]

    s=Solution()

    print(s.PrintMinNumber(l))

是否为平衡二叉树

class Solution:

    def __init__(self):

        self.flag=true

    def getDepth(self,pRoot):

        if pRoot==None:

            return 0

        return max(self.getDepth(pRoot.left),self.getDepth(pRoot.right))

    def IsBalanced_Solution(self, pRoot):

        if pRoot==None:

            return True

        if abs(self.getDepth(pRoot.left)-self.getDepth(pRoot.right))>1:

            return False

        return self.IsBalanced_Solution(pRoot.left) and self.IsBalanced_Solution(pRoot.right)

去除出现次数为偶数的数

class Solution:

    # 返回[a,b] 其中ab是出现一次的两个数字

    def FindNumsAppearOnce(self, array):

        l2=list(set(array))

        for i in l2:

            array.remove(i)

        for i in array:

            if i in l2:

              l2.remove(i)

        return l2

if __name__ == '__main__':

    s=Solution()

    l1=[4,6,1,1,1,1]

    print(s.FindNumsAppearOnce(l1))

相关文章

  • 全网最全剑指offer题目解答

    【剑指offer】Java版代码(完整版) 【剑指offer】1-10题 【剑指offer】11-20题 【剑指o...

  • 2018-10-18剑指offer

    leetcode不同路径二 class Solution(object): def uniquePathsWi...

  • 剑指offer 和 leetcode题目

    剑指offer leetcode

  • 单例模式

    单例模式 最近在看《剑指offer》,根据《剑指offer》的讲解,结合《effectiveJava》简单学习了一...

  • 年龄排序

    摘抄资料:《剑指offer》

  • 剑指offer

    第一题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,...

  • 《剑指offer》

    4.调整数组顺序使奇数位于偶数前面 题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇...

  • 剑指offer

    二维数组中查找数在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到...

  • 剑指offer

    剑指offer题目 1 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。...

  • 剑指offer

    1.链表反转 1、输出倒数第k个数

网友评论

      本文标题:2018-10-18剑指offer

      本文链接:https://www.haomeiwen.com/subject/fgyszftx.html