阿里笔试编程题 - Go语言中文社区

阿里笔试编程题


阿里搜索部面试

https://blog.csdn.net/kaikai_sk/article/details/90216539

买卖股票的最佳时机

https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        n = len(prices)
        if n < 2:
            return 0
        
        ret = [0] * n
        for i in range(n-1):
            tmp = sorted(prices[(i+1):])
            if tmp[-1] > prices[i]:
                ret[i] = tmp[-1] - prices[i]
                
        return(max(ret))

最大子序和

动态规划:当前最大得分=max(该位置开始, 从前一位置相加)
https://leetcode-cn.com/problems/maximum-subarray/

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        n = len(nums)
        
        ret = [nums[0]]
        for i in range(1,n):
            tmp = ret[-1]
            ret.append(max(nums[i], nums[i]+tmp))

        return(max(ret))

202阿里巴巴实习笔试编程题

https://blog.csdn.net/qq_34796146/article/details/105060606?depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-16&utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-16
在这里插入图片描述

def zuhe(n,m):
    ret = 1
    for i in range(n-m+1,n+1):
        ret = ret * i
    for i in range(1,m+1):
        ret = ret/i
    return ret

n = int(input())
res = 0
for i in range(1,n+1):
    tmp = i * zuhe(n,i)
    res = res + tmp
print(res)

结果

4
32.0

阿里笔试题目

https://blog.csdn.net/JH_Shawlin/article/details/105231846
在这里插入图片描述

def maxIndex(a, n, k):
    ret = 0
    a[0] = a[0]+k
    for i in range(1,n):
        a[i] = a[i] + k
        if a[i]>a[ret]:
            ret = i
    return ret

n, m, k = map(int, input().split())
a = list(map(int, input().split()))

for i in range(m):
    j = maxIndex(a, n, k)
    a[j] = int(a[j]/2)
print(sum(a))

在这里插入图片描述

2020暑期实习笔试

题目一:
题目描述:
现在有n个怪物,每一个怪物有一定的血量,你手里有m只箭,每一只箭都有一个伤害值,同时也有一个花费。我们现在假设每一只箭只能用一次并且每一个怪物也只能射一次,想要把所有怪物都击杀问最少需要花费多少,若无法全部击杀,则输出No。
击杀的条件为:使用的这只箭的伤害大干等于怪物的血量,则就可以击杀。
输入描述:
第一行输入一个整数了,代表有T组测试数据。
对于每一组测试数据,一行输入两个整数n和m,代表有n个怪物,m只接下来n个数,a(i)代表每一个怪物的血量,接下来m个数,b(i)代表每一只箭的伤害:接下来m个数,c(i)代表每一只箭的花费。
|1≤T≤10
|1≤n,m≤100000
1≤a[i],b[i],c[i]≤100000
输出描述:
对于每一组数据,输出一行,代表满障怪物的最少花费,若消除不了,输出NO

题目二:
题目描述
小强很喜欢二进制的里,现在给你一个二进制串,可以翻转若干次,翻转规则如:你可以选择任一个位置将这位进行翻转,同时他的左面和右面相邻的1个位置也进行翻转,翻转是0变成1,1变成0例如:11011,我们选择在第三个位置翻转。则第二个位置和第四个位置也跟着翻转,所以反转后变成10101若翻转位置在最左侧,则只有右侧相邻元素跟右进行翻转,右翻转位置在最右侧,则只有左侧相邻元素跟看翻转。
现在小强给你这个二进制串,他想知道能不能做通过翻转,使得这个二进制串的所有位部是0,若可以,请找到最少的操作次数,若不可以输出NO.
输入描述:
第一行输入一个整数T,代表有T组测试数据,接下来丁行,每一行一个字符串S,保证只有0和1。
1≤T≤100
1≤len(s)≤20
输出描述:
对子每一组教据,继出一行,代表最少的操作次数,若不可以,输出N0。

2018春招技术类编程题目汇总

https://www.nowcoder.com/questionTerminal/cc0a71a1dfdb4c64a3ffe000f71ae12c

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_31839959/article/details/105719241
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢