const scrollTop = container.scrollTop;
const contentHeight = container.scrollHeight;
const height = container.clientHeight;
const shouldTrigger = contentHeight - height - scrollTop <= distance
复制代码
我建议将如果牛客网的代码不太好调试就立刻复制到本地调试。
第二题:一个正整数n最少多少步才能变为0
他可以做的变换:
-
n - 1
-
如果n是2的倍数:n / 2
-
如果n是3的倍数:n / 3
数据范围:
-
count:1到10000
-
n:1到2的31次幂
输入示范
2
10
10
复制代码
输出示范
4
4
复制代码
我的答案:
动态规划dp 剪枝
这道题我第一眼看上去以为是一道简单的动态规划,但我笔试时一直没有通过。
现在想明白了。这道题是一道简单的动态规划,只是需要剪枝。我们可以观察到n的最大值可以为2的31幂,所以如果我们直接从顶向下不剪枝肯定是会爆栈的。(话说为什么我笔试的时候也看到数据范围了,为什么没有想到呢)当然这道题也不能自底向上了,因为数据量太大了。
我们自顶向下,然后使用备忘录记录数据。如果是2的倍数或者3的倍数就不用计算n-1的情况了。
第三题:01背包?
有一个行数r,列数c的矩阵。选择矩阵中的值,使列相加为c的情况下,使值相加最大。每行只能选择一次。
第四题:计算运算表达式的值
输入示范
"1+4/2-1"
复制代码
输出示范
2
复制代码
这题我认为他是在考javascript的api(eval),因为规定只能用javascript答题。
所以我直接eval运行了。
第五题:将中文数字字符串转换成数字
数据范围:不超过1亿
考点:规律的发现
- 输入一:“一千三”
输出一:1300
- 输入二:“一千三百零一”
输出二:1301
- 输入三:“十二”
输出三:12
- 输入四:“一千三百二十一万一千三百二十一”
输出四:13211321
这道题不考数据结构,就考能不能发现规律,解决问题。我考试前看见过这道题,但是没有细看他们是怎么解答的。
最终经历千辛万苦写出来了。
思路:
-
我们要将文字转换成数字,所以需要一个映射关系。
-
十百千万都是单位,所以也要映射一下,注意零的思考,零我把它当作单位而不是数字(需要特殊处理)例子:一千三百零一。
-
特殊情况的考虑:例如最后一个数没有单位,一千三。
-
数据范围在一亿以内,所以万这个单位可以特殊化。出现万就把转换中的结果乘10000.
由这次的腾讯面试,总结了一份腾讯面试题资料,小伙伴需要的请自取。点击这领取腾讯前端面试题
最后
编程基础的初级开发者,计算机科学专业的学生,以及平时没怎么利用过数据结构与算法的开发人员希望复习这些概念为下次技术面试做准备。或者想学习一些计算机科学的基本概念,以优化代码,提高编程技能。这份笔记都是可以作为参考的。