Unity3D面试题目汇总(再整理)(二)

深圳(ly)某公司面试题:
一:二叉树:考察先序遍历中序遍历(题目过于简单就不做叙述了)给出一个先序遍历以及中序遍历求出这个树的具体结构。

说到二叉搜索树,这里可以介绍一下二叉树搜索树的这个玩意儿是个啥,

  • 若它的左子树不为空,左子树上所有节点的值都小于它的根节点。
  • 若它的右子树不为空,右子树上所有的节点的值都大于它的根节点。

它的时间复杂度最差情况下是n,平均情况下是log n 

二:题目是比较具体的需要你根据具体的需求来制定对应的函数,具体的情形如下所示:

不同的兵种、每一个兵种能够运输资源的能力值也不同、需要制定一个快速选择功能:

1、让资源尽可能地运走

2、让参与运输的士兵数目尽可能地少

其实可以抽象为给定一个值,这个值所需要的和的组合,且这个组合中的数目要越少越好并且不超过一定值

测试代码如下所示

#具体方法 输入的三个参数分别为
#my_solidr 士兵的种类(List):其中第一个参数为士兵运输能力值、第二个参数为士兵的当前数量、第三个值为士兵的需要选择的数量
#max_res 资源的最大数量,不能够超过这个值,这是最大的前提
#max_solid 士兵可以雇佣的最大数量,不能够超过这个值,这是跟资源同级的最大前提

def GetSoliderList(my_solidr, max_res, max_solid):
    res = []
    for v in range(len(my_solidr)):
        temp = max_res // my_solidr[v][0]
        # 如果没有要求不能够超过最大的资源数量的话,可以下面注释的语句给它的数量+1,目前还不完善,因为如果当前这个的数量小于1的话需要拿上一个兵种的数量1,由下往上检测
        # if temp == 0 and my_solidr[v][1] >= 1:
        #     res.append([my_solidr[v][0], my_solidr[v][1] - 1, 1])
        #     return res
        if temp * my_solidr[v][0] == max_res and temp <= my_solidr[v][1]:
            if temp <= max_solid:
                res.append([my_solidr[v][0], my_solidr[v][1] - temp, temp])
                return res
            else:
                res.append([my_solidr[v][0], my_solidr[v]
                            [1] - max_solid, max_solid])
                return res
        elif temp * my_solidr[v][0] < max_res and temp >= my_solidr[v][1]:
            if my_solidr[v][1] <= max_solid:
                res.append([my_solidr[v][0], 0, my_solidr[v][1]])
                max_res -= my_solidr[v][1] * my_solidr[v][0]
                max_solid -= my_solidr[v][1]
            else:
                res.append([my_solidr[v][0], my_solidr[v]
                            [1] - max_solid, max_solid])
                return res
        elif temp * my_solidr[v][0] < max_res and temp <= my_solidr[v][1]:
            if temp <= max_solid:
                res.append([my_solidr[v][0], my_solidr[v][1] - temp, temp])
                max_res -= temp * my_solidr[v][0]
                max_solid -= temp
            else:
                res.append([my_solidr[v][0], my_solidr[v]
                            [1] - max_solid, max_solid])
                return res

    return res


#测试输出
my_solidr = [[10, 200, 0], [5, 100, 0], [3, 100, 0], [2, 100, 0]]
max_res = 2434
max_solid = 300
print(GetSoliderList(my_solidr, max_res, max_solid))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值