华为笔试ak求个面试

华为笔试相比其他大厂还真是简单呀,一个小时ak,许愿个面试
同时许愿百度实习oc,微保二面通过


贴个二三题代码吧
第二题:
'''
5a 12 5b ba 34 5b bb 88 05 5a 75 cd bb 62 5a 34 cd 78 cc da fb 06 5a
'''

strs = input().strip().split(" ")

last_flag=0
tmp_num=[]
tmp_length=0
res_list=["5a"]
i=1
while(i<len(strs)):
    #print(tmp_num,res_list)
    if strs[i]=="5a":
        target_num=int(strs[i-1],16)
        #print(target_num,tmp_num)
        if tmp_length==target_num+1:
            res_list.extend(tmp_num.copy())
            res_list.append("5a")   
        last_flag=i
        tmp_num=[]
        tmp_length=0
    elif strs[i]=="5b":
        if i+1<len(strs):

            if strs[i+1]=="ba":
                tmp_num.append("5b")
                tmp_num.append("ba")
                tmp_length+=1
            elif strs[i+1]=="bb":
                tmp_num.append("5b")
                tmp_num.append("bb")
                tmp_length+=1

            i+=1
    else:
        tmp_num.append(strs[i])
        tmp_length += 1
    i+=1

for i in range(len(res_list)-1):
    print(res_list[i],end=" ")
print(res_list[-1])





第三题:
dfs所有可能情况即可
'''
9 3
100 200 300 400 500 600 700 800 900
'''

m,k=input().strip().split(" ")
m=int(m)
k=int(k)
nums=input().strip().split(" ")
nums=[int(nums[i]) for i in range(len(nums))]
sums=[nums[0]]
for i in range(1,len(nums)):
    sums.append(sums[-1]+nums[i])


res=[]
max_val=0
def dfs(level,start_index,tmp_res):
    global max_val,res,m
    if level==k:
        min_val=sums[tmp_res[0]-1]
        for i in range(1,len(tmp_res)):
            min_val=min(min_val,sums[tmp_res[i]-1]-sums[tmp_res[i-1]-1])
        min_val=min(min_val,sums[-1]-sums[tmp_res[-1]-1])
        if min_val>max_val:
            max_val=min_val
            res=tmp_res
    else:
        for i in range(start_index+1,m):
            tp=tmp_res.copy()
            tp.append(i)
            dfs(level+1,i,tp)

dfs(1,0,[])


#print(res,max_val)
for i in range(len(nums)-1):
    if i in res:
        print("/ "+ str(nums[i]),end=" ")
    else:
        print(nums[i],end=" ")

if len(nums)-1 in res:
    print("/ "+str(nums[-1]))
else:
    print(nums[-1])


#华为#
全部评论
大佬,一小时就全做完了,膜拜一下。第三题假设只分成两段骗了40%,我已经很满足了
1 回复 分享
发布于 2020-04-22 21:22
想问问第三题的思路 就是求分割数组和最小的最大值那个
点赞 回复 分享
发布于 2020-04-22 20:57
我第三题dfs一直80%,也有多组解时取S(1),S(2)……大的优先,就是不知道哪里被卡了
点赞 回复 分享
发布于 2020-04-22 21:03
第二题a了63.63%,第三题只a了40%😢,算了实力如此
点赞 回复 分享
发布于 2020-04-22 21:04
a了两个,求面试机会啊,还没面试过
点赞 回复 分享
发布于 2020-04-22 21:07
int main() {     int m, k, temp;     cin >> m >> k;     vector<int> nums;     int sum_ = 0;     for (int i = 0; i < m; i++) {         cin >> temp;         sum_ += temp;         nums.push_back(temp);     }     int x = sum_ / k;     for (int i = 0; i < k; i++) {         int xx = 0;         int j = 0;         for (; j < nums.size(); j++) {             xx += nums[j];             if (xx - x > x - xx + nums[j]) {                 break;             }         }         for (int k = 0; k < j; k++) {             cout << nums[k] << " ";         }         if (i != k - 1) cout << "/ ";         nums = vector<int> (nums.begin() + j, nums.end());     }     for (int ii = 0; ii < nums.size(); ii++) {         cout << nums[ii] << " ";     } } 第三题AC代码 思路:计算平均值,累加到平均值附近则为一段,输出即可。
点赞 回复 分享
发布于 2020-04-22 21:11
怎么办,我一个js前端的只a了一道题,后面两题见鬼😓
点赞 回复 分享
发布于 2020-04-22 21:15
华为笔试100分就过了
点赞 回复 分享
发布于 2020-04-22 21:18
第二题的输入输出都是字符串吗 为什么我过不了呀
点赞 回复 分享
发布于 2020-04-22 21:18
大佬,为何不试试阿里呢,有你想要的哦,https://www.nowcoder.com/discuss/410083
点赞 回复 分享
发布于 2020-04-22 22:59
第三题每个划分里面不能有重复元素吗
点赞 回复 分享
发布于 2020-04-23 09:33
你们收到测评了吗
点赞 回复 分享
发布于 2020-04-23 16:52
楼上各位,有人约了面试么??
点赞 回复 分享
发布于 2020-04-24 22:47
楼上的各位武长地区的有没有收到面试通知呀??
点赞 回复 分享
发布于 2020-05-08 15:07

相关推荐

begin没有end:你就等吧我从去年筛到了今年,一等一个不吱声
投递海康威视等公司10个岗位 海康威视求职进展汇总
点赞 评论 收藏
分享
评论
4
27
分享
牛客网
牛客企业服务