24.8.11鹰角笔试

a了2.5,最后一题找不出原因直接提前交了...

第一题: 给你一系列二维点,让你用x方向和y方向的直线将其等分成两边点数相同的两半。让你求满足要求的直线的数量。

这题由于是在x,y方向上分割,因此x,y轴是相互独立的(在x轴的分割方式不会因为点y坐标的变化而变化)。因此这题等价于在两个1维坐标轴上找能等分这些点的坐标个数的和。分别对x和y的坐标值排序,找到中间位置,计算较大数减较小数的差即可。

第二题:删除链表中质因数个数不为2的节点。

题目本身很简单,个人感觉难在读题,我不太记得质因数的定义是什么了。我以为是要保留恰好有两个互质因数的数(例如100=4x25可以保留,12=3x4可以保留,最离谱的是这个思路代到样例里都是对的)。题目和样例都没有解释什么是质因数,导致我这题卡了起码40分钟。

第三题:给你一颗树,让你构建一个反转完全搜索树。一个反转完全搜索和完全搜索树类似,唯一的不同是反转树的最底层节点是从右向左排布的。返回反转树的层序遍历的结果。

这题我想了个骚方法,反转完全树的镜像其实是一个左儿子大右儿子小的完全搜索树(我后文叫它镜像树。而反转树的层序遍历结果就是镜像树层序遍历结果逐层做翻转的结果。而完全树可以维护在一个线性数组里(思路和堆类似,这个数组本质上就是完全树的层序遍历结果)。因此,可以先遍历输入的树,收集其所有节点并排序。用排序结果通过中序遍历在数组上构造一个线性镜像树。最后在这个线性数组上对树逐层反转,得到最终结果。
这题我感觉我思路没问题,但只过了50%,不太清楚哪里写错了。不知道没有没路过的大佬能指点一下。

---------------------------------

更新 感谢信了 之前在牛客上看到笔试AC的佬也挂了,完全搞不懂鹰角想招什么人
全部评论
9.8笔了题目一样,ac了,这么一看是完全不招人啊,跟莉莉丝一个德行,释然了
2 回复 分享
发布于 2024-09-09 14:56 湖北
问一下你这边是校招还是社招,如果是社招的话是几年经验。
1 回复 分享
发布于 2024-08-22 15:46 上海
9.8题目也一模一样,本来ak了心情很好,现在一看感觉心情复杂,是不是ak了根本没用啊,一样挂
点赞 回复 分享
发布于 2024-09-08 21:23 北京
8.31题目也完全一致…
点赞 回复 分享
发布于 2024-08-31 21:29 上海
啊这,我8.24笔试结果题一模一样。感觉真就不招人。我估计ac了也会挂。
点赞 回复 分享
发布于 2024-08-24 21:45 北京
鹰角技术就开那几个岗位是真抠搜
点赞 回复 分享
发布于 2024-08-13 01:27 广东

相关推荐

1.自我介绍2.介绍一下mcp, skills3.了解react哪些状态管理库4.对话是sse还是什么?是用fetch还是EventSource?5.ts中的any 和 unknown讲一讲6.是直接用组件库的组件还是自己封装了一些别的7.代码输出题1function main() {{var a = 1let b = 2}console.log(a);console.log(b);}main()console.log(a);8.什么是块级作用域 全局作用域 函数作用域9.代码输出题2for (var i = 0;i < 5;i++) {setTimeout(() => {console.log(i);}, 100);}10.代码输出题3for (var i = 0; i < 5; i++){function printText(temp) {setTimeout(() => {console.log(temp);}, 100);}printText(i)}11.代码输出题4for(var i = 0;i < 5;i++){function printText(temp) {var temp = isetTimeout(() => {console.log(temp);}, 100);}printText(i)}12.代码输出题5for(var i = 0;i < 5;i++){function printText(temp) {setTimeout(() => {var temp = iconsole.log(temp);}, 100);}printText(i)}13.点击控制台输出题export default function App() {const [count, setCount] = useState(0)console.log('render',count)return (<div><h1>{count}</h1>{setCount(count + 1)setTimeout(() => console.log('setTimeout', count), 1000)}}>+1</div>)}//这个组件点击按钮后,控制台的输出顺序和值如下:// 1. render 1 (组件重新渲染, count 更新为 1)// 2. setTimeout 0 (1秒后输出,注意这里是 0 而不是 1)14.算法:给有序数组arr = [-4, -1, 0, 3, 5],返回平方后的排序// 有序数组平方后排序const arr = [-4, -1, 0, 3, 5]function solution(arr) {const len = arr.lengthconst result = new Array(len)let left = 0let right = len - 1let index = len - 1while (left <= right) {if (arr[left] * arr[left] > arr[right] * arr[right]) {result[index] = arr[left] * arr[left]left++} else {result[index] = arr[right] * arr[right]right--}index--}return result}console.log(solution(arr));15.反问
查看14道真题和解析
点赞 评论 收藏
分享
评论
4
21
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务