- 算法题:买卖股票的最佳时机(只能有一次买卖,可以最多两次买卖,不限次数)(4)
只能买一次和无穷次简单,两次以及k次困难
- 算法题(leetcode55题):给一个数组,例如[1,2,3,4,5],a[i]表示在该位置可以向前行走的最大距离,判断是否可以到达数组的最后一个元素。
贪心,维护一个变量,表示当前可以跳到的最远距离
class Solution {
public:
bool canJump(vector<int>& nums) {
int maxDistance = 0;
int n = nums.size();
for(int i=0;i<n;i++){
if(maxDistance<i) return false;
maxDistance = max(maxDistance,nums[i]+i);
}
return maxDistance>=n-1;
}
};
- 场景题:让你设计一个微信发红包的api,你会怎么设计,不能有人领到的红包里面没钱,红包数值精确到分。
抢红包算法
- AB两个排序数组,原地合并数组。(A当中穿插一些无效数字怎么处理?)
归并
- 剑指原题,剪绳子。
- 一个数据先递增再递减,找出数组不重复的个数,比如 [1, 3, 9, 1],结果为3,不能使用额外空间,复杂度o(n)
- 高考成绩2000万数据,分数0-750,如何快速知道你的排名,如何知道任一分数排名 --->桶排序 (3)
- 两根香,一根烧完1小时,如何测量15分钟---->开始时一根香两头点着,一根香只点一头,两头点着的香烧完说明过去了半小时,这时将只点了一头的香另一头也点着,从这时开始到烧完就是15分钟。
- 两个链表,可能相交,找出相交的节点,给出证明(2)
- 写一个函数,求平方根,函数参数为目标数字和精度,测试案例 fn(4.1,0.001) fn(501.1,0.001) fn(0.045,0.001)