2026年软件开发岗位面试问题解析.docxVIP

  • 0
  • 0
  • 约9.37千字
  • 约 28页
  • 2026-10-20 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年软件开发岗位面试问题解析

一、编程语言基础(3题,每题10分)

1.题目:

请用Java实现一个方法,输入一个整数数组,返回其中出现次数超过一半的元素。如果不存在这样的元素,返回-1。要求时间复杂度为O(n),空间复杂度为O(1)。

答案:

java

publicintmajorityElement(int[]nums){

intcount=0;

Integercandidate=null;

for(intnum:nums){

if(count==0){

candidate=num;

}

count+=(num==candidate)?1:-1;

}

//验证候选元素是否出现超过一半

count=0;

for(intnum:nums){

if(num==candidate){

count++;

}

}

returncountnums.length/2?candidate:-1;

}

解析:

该方法采用摩尔投票算法,通过遍历数组时交替抵消不同元素来找到候选多数元素。首先设置计数器`count`和候选值`candidate`,当`count`为0时,将当前元素设为候选值。随后,若当前元素与候选值相同,则`count`加1;否则减

文档评论(0)

1亿VIP精品文档

相关文档