算法面试题及答案.docxVIP

  • 0
  • 0
  • 约1万字
  • 约 25页
  • 2026-01-26 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年算法面试题及答案

1.数组与字符串(共3题,每题10分)

1.1题目(10分):

给定一个字符串`s`,请你找出其中不重复的字符的最长长度。例如,输入`abcabcbb`,输出`3`(对应子串`abc`)。

答案:

python

deflength_of_longest_unique_substring(s:str)-int:

char_set=set()

left=0

max_len=0

forrightinrange(len(s)):

whiles[right]inchar_set:

char_set.remove(s[left])

left+=1

char_set.add(s[right])

max_len=max(max_len,right-left+1)

returnmax_len

解析:

使用滑动窗口技术,`left`和`right`分别表示窗口的左右边界。遍历字符串时,如果`s[right]`在`char_set`中,则移动`left`并移除`s[left]`直到`s[right]`不在集合中。每次更新最大长度`max_len`。时间复杂度O(n),空间复杂度O(1)(假设字符集固定)。

1.2题目(10分):

给定一个整数数组`nums`,返回所有可能的子集(不重复的元素组合)。例如,输入`[1,2,3]`,输出`[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]`。

答案:

python

defsubsets(nums:list)-list:

result=[]

subset=[]

nums.sort()#保证子集顺序一致,避免重复

defbacktrack(start):

result.append(subset.copy())

foriinrange(start,len(nums)):

subset.append(nums[i])

backtrack(i+1)

subset.pop()

backtrack(0)

returnresult

解析:

回溯算法的经典应用。通过递归构建所有可能的子集,`start`参数保证每个元素只被选择一次。先排序确保子集的顺序固定,避免重复。时间复杂度O(2^n),空间复杂度O(n)。

1.3题目(10分):

给定一个二维数组`matrix`,返回其中的螺旋顺序。例如,输入`[[1,2,3],[4,5,6],[7,8,9]]`,输出`[1,2,3,6,9,8,7,4,5]`。

答案:

python

defspiral_order(matrix:list)-list:

ifnotmatrix:

return[]

result=[]

top,bottom=0,len(matrix)-1

left,right=0,len(matrix[0])-1

whiletop=bottomandleft=right:

从左到右

foriinrange(left,right+1):

result.append(matrix[top][i])

top+=1

从上到下

foriinrange(top,bottom+1):

result.append(matrix[i][right])

right-=1

iftop=bottom:

从右到左

foriinrange(right,left-1,-1):

result.append(matrix[bottom][i])

bottom-=1

ifleft=right:

从下到上

foriinrange(bottom,top-1,-1):

result.append(matrix[i][left])

left+=1

returnresult

解析:

使用四个指针`top`、`bottom`、`left`、`right`表示当前遍历的边界。按顺序遍历上、右、下、左边界,并逐步缩小边界范围。注意在遍历后检查边界是否有效,避免重复遍历。时间复杂度O(mn),空间复杂度O(1)。

2.哈希表(共3题,每题10分)

2.1题目(10分):

给定一个字符串`s`,请你统计并返回其中字母异位词的个数。字母异位词指由相同字母重新排列形成的单词,如`rat`和`art`是字母异位词。假设字母均为小写。

答案:

python

defcount_anagrams(s

文档评论(0)

1亿VIP精品文档

相关文档