zoukankan      html  css  js  c++  java
  • 108. Convert Sorted Array to Binary Search Tree

    题目来源:

    https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/submissions/

    自我感觉难度/真实难度:easy/easy
     
    题意:

     把一个list转化为平衡树

    分析:
     
    自己的代码:
    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def sortedArrayToBST(self, nums):
            """
            :type nums: List[int]
            :rtype: TreeNode
            """
            index=len(nums)
            if index==0:
                return None
            if index==1:
                return TreeNode(nums[0])
            
            cur=TreeNode(nums[index//2])
            cur.left =self.sortedArrayToBST(nums[:index//2])
            cur.right=self.sortedArrayToBST(nums[index//2+1:])
            return cur
            
    代码效率/结果:

    Runtime: 104 ms, faster than 88.84% of Python3 online submissions forConvert Sorted Array to Binary Search Tree.

     解题思路还是有的,但是总是一些细节出问题:1.返回值,一定要各处都符合需要的类型,这是是TreeNode    2.一个list需要分割成两半的时候,不仅是需要考虑list长度为0时,还有list长度为1的时候   3.看清楚list中index的取值,取值是不会拿掉原来数组中的值得

    优秀代码:
    class Solution:
        def sortedArrayToBST(self, nums):
            """
            :type nums: List[int]
            :rtype: TreeNode
            """
            return self.subSortedArrayToBST(nums,0,len(nums)-1)
            
        def subSortedArrayToBST(self,l,i,j):
            if l == [] :
                return []
            BST = TreeNode(l[(i+j+1)//2])
            if i <= (i+j+1)//2-1:
                BST.left = self.subSortedArrayToBST(l,i,(i+j+1)//2-1)
            if j >= (i+j+1)//2+1:
                BST.right = self.subSortedArrayToBST(l,(i+j+1)//2+1,j)
            return BST
    代码效率/结果:

    Runtime: 108 ms, faster than 71.50% of Python3 online submissions forConvert Sorted Array to Binary Search Tree.

    完美的告诉你,应该如何去改写答案给的函数,使用自己定义的函数

     
    自己优化后的代码:
     
    反思改进策略:

    1.提交之前要检查变量名称是否一致

    2.对list分割取一般时,index要考虑等于0和1的情况

  • 相关阅读:
    自定义带有uitableview的alertview对话框
    ZBarSDK扫描二维码
    iOS-UISearchBar和UISearchController(参考网友来练习一下)
    Nsstring中的搜索方法rangeOfString
    手势识别UIGestureRecognizer
    对iPhone手机型号进行判断
    iOS NSString 与NSData转化
    使用dispatch_once实现单例
    Command /usr/bin/codesign failed with exit code 1
    ios button的title下面添加横线
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10261621.html
Copyright © 2011-2022 走看看