- 0
- 0
- 约5.99千字
- 约 19页
- 2026-03-19 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年微软技术专家面试全攻略及答案
一、编程题(共5题,每题10分,总分50分)
考察方向:算法设计、数据结构、编程能力
题目1:
问题描述:
给定一个非负整数数组`nums`,和一个正整数`k`,请设计一个算法,找出数组中和至少为`k`的最短子数组长度。如果不存在这样的子数组,返回0。
示例:
输入:`nums=[1,2,3,4,5]`,`k=11`
输出:3(子数组[4,5,2]的和为11,长度最短)
答案:
cpp
includevector
includedeque
usingnamespacestd;
intshortestSubarray(vectorintnums,intk){
intn=nums.size();
vectorlonglongprefix(n+1,0);//前缀和数组
for(inti=0;in;++i)prefix[i+1]=prefix[i]+nums[i];
dequeintdq;//双端队列,存储前缀和的下标
dq.push_back(0);
intres=n+1;
for(inti=1;i=n;++i){
//当前前缀和与前一个前缀和之差=k,更新结果
while(!d
原创力文档

文档评论(0)