基本信息
文件名称:小米面试题及答案.docx
文件大小:37.9 KB
总页数:19 页
更新时间:2025-12-03
总字数:约8.55千字
文档摘要
小米面试题及答案
问题1:给定一个整数数组nums和一个整数k,找出数组中和至少为k的最短非空子数组的长度。如果不存在这样的子数组,返回-1。要求时间复杂度不超过O(n)。
答案:这道题可以用前缀和结合单调队列的方法解决。首先计算前缀和数组preSum,其中preSum[i]表示前i个元素的和(preSum[0]=0)。我们需要找到ij,使得preSum[j]-preSum[i]≥k,且j-i最小。为了快速找到满足条件的i,维护一个单调递增的双端队列,队列中保存的是可能的i的索引。遍历j时,首先移除队列中所有preSum[j]-preSum[队首]≥k的元素,因为随着j增大,后续的j更大,