软件工程师技术面试算法题库与解题技巧含答案.docxVIP

  • 1
  • 0
  • 约6.23千字
  • 约 18页
  • 2026-03-05 发布于福建
  • 举报

软件工程师技术面试算法题库与解题技巧含答案.docx

第PAGE页共NUMPAGES页

2026年软件工程师技术面试算法题库与解题技巧含答案

1.数组与字符串(5题,每题6分)

1.1.题目1(6分):

给定一个包含重复数字的数组`nums`,返回数组中不重复的数字的个数。

示例:`nums=[1,2,2,1,3,4,4]`,输出:`4`(即1,2,3,4)。

要求:时间复杂度O(n),空间复杂度O(1)。

1.2.题目2(6分):

实现一个函数,将字符串中的所有大写字母转换为小写字母,所有小写字母转换为大写字母。

示例:`input=HelloWorld`,输出:`hELLOwORLD`。

1.3.题目3(6分):

给定一个字符串`s`和一个整数`k`,返回`s`中所有长度为`k`的子串中字母异或的最大值。

示例:`s=0110101`,`k=3`,输出:`6`(子串101异或结果为5,110为6,最大为6)。

1.4.题目4(6分):

判断一个字符串是否是另一个字符串的子串(不区分顺序)。

示例:`s1=abc`,`s2=aabbcc`,输出:`true`(abc字符顺序出现在`s2`中)。

1.5.题目5(6分):

给定一个由`(`,`)`,`{}`,`}`组成的字符串,判断其是否有效(括号匹配)。

示例:`s={[]()}`,输出:`true`;`s={[)]`,输出:`false`。

2.排序与搜索(4题,每题7分)

2.1.题目6(7分):

实现快速排序,不使用递归,用迭代方式实现。

示例:`nums=[3,1,4,1,5,9,2]`,排序后:`[1,1,2,3,4,5,9]`。

2.2.题目7(7分):

在一个排序数组中查找第一个大于等于目标值的元素的位置。

示例:`nums=[1,2,4,4,5,6]`,`target=4`,输出:`2`(`nums[2]==4`)。

2.3.题目8(7分):

给定一个无重复元素的二维矩阵,每行按升序排列,返回矩阵中目标值是否存在的判断。

示例:`matrix=[[1,3,5],[6,7,9]]`,`target=7`,输出:`true`。

2.4.题目9(7分):

实现二分查找的变体:查找一个升序数组中数字出现次数最多的元素。

示例:`nums=[1,2,2,3,3,3,4]`,输出:`3`(出现3次)。

3.栈与队列(4题,每题7分)

3.1.题目10(7分):

用栈实现队列,支持`push`和`pop`操作。

示例:

python

queue=[]

queue.push(1)

queue.push(2)

print(queue.pop())#输出1

print(queue.pop())#输出2

3.2.题目11(7分):

判断一个二叉树是否是对称的(镜像对称)。

示例:

1

/\

22

/\/\

3443

输出:`true`。

3.3.题目12(7分):

用队列实现栈,支持`push`和`pop`操作。

示例:

python

stack=[]

stack.push(1)

stack.push(2)

print(stack.pop())#输出2

print(stack.pop())#输出1

3.4.题目13(7分):

给定一个包含`(`,`)`,``的字符串,判断是否存在一种括号分配方式使其有效。

示例:`s=()`,输出:`true`(``可以视为`(`或`)`)。

4.树与图(5题,每题8分)

4.1.题目14(8分):

给定二叉树,返回其最大深度。

示例:

3

/\

920

/\

157

输出:`3`。

4.2.题目15(8分):

判断二叉树是否是平衡二叉树(左右子树高度差不超过1)。

示例:

1

/\

23

/

4

输出:`false`(节点4导致左子树高度差为2)。

4.3.题目16(8分):

广度优先搜索(BFS)遍历二叉树,按层输出节点值。

示例:

1

/\

23

/\\

456

输出:`[1,2,3,4,5,6]`。

4.4.题目17(8分):

给定一个无向图,用邻接表表示,返回其所有连通分量。

示例:

graph={

0:[1,2],

1:[0],

2:[0],

3:[4],

4:[3]

}

输出:`[[0,1,2],[3,4]]`。

4.5.题目18(8分):

判断二叉搜索树(BST)中是否存在某个值。

文档评论(0)

1亿VIP精品文档

相关文档