2021年9月底,百度NLP岗位面试题分享!

共 419字,需浏览 1分钟

 ·

2021-10-31 10:13

文 | 七月在线
编 | 小七


7274923258804cbc6cefb1db71b56396.webp

目录

FIGHTING


问题1:先序遍历(要求递归和迭代两种方式)

问题2:旋转数组寻找k


26bad757fa317b4d25c1c2896da4593f.webp

问题1、先序遍历(要求递归和迭代两种方式)

方法一:递归

树本身就有递归的特性,因此递归方法最简单,这里直接放上代码,需要说明的是,中序遍历,前序遍历和后序遍历可采用相同的代码模板完成实现。


ce5daed04bd3bd6aa4f5857f1b7f9eba.webp


时间复杂度:O(n),n 为树的节点个数

空间复杂度:O(h),h 为树的高度


方法二:迭代

代码如下:


c460029f57c6e82850fcb9ecf10060cb.webp


时间复杂度:O(n),n 为树的节点个数

空间复杂度:O(h),h 为树的高度

26bad757fa317b4d25c1c2896da4593f.webp


问题2、旋转数组寻找k

思路一:暴力解法

直接遍历整个数组,找到目标值target

代码如下:

2acbe007b86fc18f46c979dfac2d8912.webp

时间复杂度:O(n)

空间复杂度:O(1)


思路二:二分查找

先要设置整个数组的左右两端端点:left = 0,right = len(nums) - 1


1、若 target == nums[mid],直接返回


2、若 nums[left] <= nums[mid],说明左侧区间 [left,mid]「连续递增」。此时:

若 nums[left] <= target <= nums[mid],说明 target 位于左侧。令 right = mid-1,在左侧区间查找;否则,令 left = mid+1,在右侧区间查找


3、否则,说明右侧区间 [mid,right]「连续递增」。


此时:若 nums[mid] <= target <= nums[right],说明 target 位于右侧区间。令 left = mid+1,在右侧区间查找

否则,令 right = mid-1,在左侧区间查找


代码如下:


c21ead95f38b3f6bb15fe973bfffa8c3.webp


时间复杂度:O(logn)

空间复杂度:O(1)


— 推荐阅读 —

最新大厂面试题


AI开源项目论文


NLP ( 自然语言处理 )


CV(计算机视觉)


推荐

浏览 45
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报