微软技术岗秋招面试题与答案详解.docxVIP

  • 2
  • 0
  • 约3.52千字
  • 约 10页
  • 2025-12-03 发布于福建
  • 举报

第PAGE页共NUMPAGES页

微软技术岗秋招面试题与答案详解

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

题目1(15分):

请实现一个函数,输入一个正整数n,返回n的汉明重量(即二进制表示中1的个数)。要求不使用内置函数,时间复杂度为O(logn)。

答案:

cpp

inthammingWeight(uint32_tn){

intcount=0;

while(n!=0){

count+=n1;

n=1;

}

returncount;

}

解析:

该方法通过位运算逐位检查n的二进制表示。每次与1进行位与运算,若结果为1,则计数器加1,并将n右移一位,直到n为0。时间复杂度为O(logn),因为每次右移都会减少n的位数。

题目2(15分):

给定一个链表,删除链表中的重复元素,返回不包含重复元素的链表。要求不使用额外空间,时间复杂度为O(n)。

答案:

cpp

structListNode{

intval;

ListNodenext;

ListNode(intx):val(x),next(nullptr){}

};

ListNodedeleteDuplicates(ListNodehead){

ListNodecurrent=head;

while(current!=nullptr){

Lis

文档评论(0)

1亿VIP精品文档

相关文档