高频算法面试题总结

 

  • 算法题:买卖股票的最佳时机(只能有一次买卖,可以最多两次买卖,不限次数)(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,你会怎么设计,不能有人领到的红包里面没钱,红包数值精确到分。

抢红包算法

 

  1. AB两个排序数组,原地合并数组。(A当中穿插一些无效数字怎么处理?)

归并

  1. 剑指原题,剪绳子。
  • 一个数据先递增再递减,找出数组不重复的个数,比如 [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)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值