腾讯是目前全国最强的互联网公司之一,它有很好的福利尤其是能给应届生不错的工资待遇。
也正因如此,想进入腾讯工作的难度和竞争的激烈程度非常之大。
虽然感觉腾讯像是更看重个人综合能力的一家公司,算法题的好坏占面评比相对小些
但是竞争难度大也不代表题就一定会很难,曾经面试腾讯 C++ 客户端的时候我就遇到过一道简单难度的算法题:
题目描述:
题号:70
假设你正在爬楼梯。需要 n
阶你才能到达楼顶。
每次你可以爬 1
或 2
个台阶。你有多少种不同的方法可以爬到楼顶呢?
解题思路:
思路一:动态规划
公式:f(x) = f(x - 1) + f(x - 2)
边界条件:f(0) = 0
f(1) = 1
时间复杂度:O(N)
空间复杂度:O(1)
C++
// C++
class Solution {
public:int climbStairs(int n) {int a = 1, b = 1, sum = 0;for(int i = 0; i < n - 1; i++) {sum = a + b;a = b;b = sum;}return b;};
};
go
// go
func climbStairs(n int) int {a, b, sum := 0, 0, 1for i := 1; i <= n; i++ {a = bb = sumsum = a + b}return sum
}