前言
记录几个面试常见题型
一、知识点
数组储存的随机性,通过索引读取数据时间复杂度O(1)
下标为啥从0开始,好像记得和计算地址二进制啥的有关
二、题目
1、搜索排序数组
1.1 分析
简单O(n)遍历过
1.2代码
class Solution {
public:
int search(vector<int>& nums, int target) {
for(int i = 0 ; i < nums.size() ; i ++)
{
if(nums[i] == target) return i;
}
return -1;
}
};
2、search II
2.1题目分析
for遍历过
2.2代码
class Solution {
public:
bool search(vector<int>& nums, int target) {
int i;
for(i = 0; i < nums.size(); ++i) {
if(nums[i] == target) {
return true;
}
}
return false;
}
};
3、153最小值
3.1题目分析
迭代比较出最小值
3.2代码
class Solution {
public:
int findMin(vector<int>& nums) {
int min = 10000;
for(int i = 0 ; i < nums.size() ; i ++)
{
if(nums[i] < min) min = nums[i];
}
return min;
}
};
4、爬楼梯
4.1题目分析
斐波那契数列
4.2代码
class Solution {
public:
int f[1000];
int climbStairs(int n) {
f[0] = f[1] = 1;
for(int i = 2 ; i <= n ; i ++)
{
f[i] = f[i -1 ] + f[i -2];
}
return f[n];
}
};
5、斐波那契数列
5.1题目分析
这算用的公式法吧
5.2代码
class Solution {
public:
int f[1000];
int fib(int n) {
f[0] = 0;
f[1] = 1;
for(int i = 2 ; i <= n ; i ++)
{
f[i] = f[i -1 ] + f[i -2];
}
return f[n];
}
};
6、1137. 第 N 个泰波那契数
6.1题目分析
都是套路啊,认真读题就够了
6.2代码
class Solution {
public:
int f[1000];
int tribonacci(int n) {
f[0] = 0;
f[1] = 1;
f[2] = 1;
for(int i = 3 ; i <= n ; i ++)
{
f[i] = f[i -1 ] + f[i -2] + f[i - 3];
}
return f[n];
}
};