腾讯公司系统工程师面试题集及解答.docxVIP

  • 0
  • 0
  • 约4.87千字
  • 约 17页
  • 2026-03-17 发布于福建
  • 举报

腾讯公司系统工程师面试题集及解答.docx

第PAGE页共NUMPAGES页

2026年腾讯公司系统工程师面试题集及解答

一、编程题(共3题,每题15分)

1.题目(15分):

实现一个函数,输入一个非负整数n,返回其对应的二进制表示中1的个数。例如,输入`n=5`(二进制`101`),返回`2`;输入`n=0`,返回`0`。要求时间复杂度为O(1)。

答案与解析:

答案:

cpp

intcountBits(intn){

intcount=0;

while(n){

count+=n1;

n=1;

}

returncount;

}

或者更高效的位运算技巧:

cpp

intcountBits(intn){

intcount=0;

while(n){

count++;

n=(n-1);

}

returncount;

}

解析:

-方法一:位遍历

通过不断右移并检查最低位是否为1,统计1的个数。时间复杂度为O(logn),不满足O(1)要求。

-方法二:BrianKernighan算法

利用`n=(n-1)`能消除最低位的1的性质,每次操作去掉一个1,直到n为0。时间复杂度为O(k),k为1的个数,平均为O(1)。

2.题目(15分):

设计一个LRU(LeastRecentlyUsed)缓存,支持get和put操作。缓存容量为固定值cap

文档评论(0)

1亿VIP精品文档

相关文档