zoukankan      html  css  js  c++  java
  • 2018秋招小红书算法方向在线编程题

    代码如下:

    class TreeNode:
        def __init__(self, x):
            self.left=None
            self.right=None
            self.value=x
    
    def BuildTree(ceng, zhong):
        if len(ceng)==0:
            return None
        if len(ceng)==1:
            return TreeNode(ceng[0])
        else:
            flag=TreeNode(ceng[0])
            root=ceng[0]
            zong=zhong[:zhong.index(ceng[0])]
            cen=[]
            for i in ceng:
                if i in zong:
                    cen.append(i)
            flag.left=BuildTree(cen,zong)
            cen = []
            zong=zhong[zhong.index(ceng[0])+1:]
            for i in ceng:
                if i in zong:
                    cen.append(i)
            flag.right=BuildTree(cen,zong)
            return flag
    
    
    def PrintLeafNode(root,node):
        if root==None:
            return
        if root.left==None and root.right==None:
            node.append(root.value)
        PrintLeafNode(root.left, node)
        PrintLeafNode(root.right, node)
    
    
    def PreTravel(root,node):
        if root==None:
            return
        node.append(root.value)
        PreTravel(root.left, node)
        PreTravel(root.right, node)
    
    
    def BackTravel(root, node):
        if root==None:
            return
        BackTravel(root.left, node)
        BackTravel(root.right, node)
        node.append(root.value)
    
    
    
    ceng=input().strip().split(" ")
    zhong=input().strip().split(" ")
    root=BuildTree(ceng, zhong)
    leaf=[]
    pre=[]
    back=[]
    PrintLeafNode(root, leaf)
    PreTravel(root, pre)
    BackTravel(root, back)
    print(" ".join(leaf))
    print(" ".join(pre))
    print(" ".join(back))

     第二题:

    代码如下:

    def ac(list1):
        if len(list1)==1:
            return 1
        count = 0
        for i in range(len(list1)):
    
            if i == 0:
                pre = 0
                back = int("".join(list1[i + 1:])) + 1
            elif i == len(list1) - 1:
                pre = int("".join(list1[:i]))
                back =1
            else:
                pre = int("".join(list1[:i]))
                back = int("".join(list1[i + 1:])) + 1
            if list1[i] == '0':
                length = len(list1) - i - 1
                tmp = (pre * (10 ** length))
                count += tmp
            elif list1[i] == '1':
                length = len(list1) - i - 1
                tmp = (pre * (10 ** length))
                count += tmp
                count += (back)
            else:
                length = len(list1) - i - 1
                k = pre + 1
                tmp = k * (10 ** length)
                count += tmp
        return count
    
    list1=list(input().strip())
    print(ac(list1))
  • 相关阅读:
    makefile基本操作
    Visual Studio Code 的 launch.json 解析
    Manjaro 安装与配置
    Manjaro 系统添加国内源和安装搜狗输入法
    ununtu 18.04 163 mirror
    How to Use GNOME Shell Extensions
    Ubuntu: repository/PPA 源
    什么是线程阻塞?为什么会出现线程阻塞?
    Java锁的种类
    java8流式编程(一)
  • 原文地址:https://www.cnblogs.com/tsdblogs/p/9672129.html
Copyright © 2011-2022 走看看