美团点评前端在线笔试题总结

由于太久没有复习算法知识,导致基本没写出来,但是都是以前学过的知识,编程题主要有两道:

1.求矩阵最小路径

给定一个矩阵m
从左上角开始
每次只能往下或者往右走
最后到达右下角的位置
路径上所有数字之和就是路径和
求最小路径和
用c++写的:

#include <iostream>
using namespace std;

int main() {
    int m;
    scanf("%d",&m);//输入矩阵大小
    int i,j,input[m][m],output[m][m];
    for (i = 0 ; i<m; i++) {//输入矩阵值
        for (j = 0; j<m; j++) {
            cin>>input[i][j];
            output[i][j] = input[i][j];
        }
    }
    for (i=1; i<m; i++) {
        output[0][i] += output[0][i-1];//处理第一行
        output[i][0] += output[i-1][0];//处理第一列
        for (j=1; j<m; j++) {
            output[i][j] += output[i][j-1]<output[i-1][j]?output[i][j-1]:output[i-1][j];//比较上方元素和左方元素值大小,取小
        }
    }
    cout<<output[m-1][m-1]<<endl;//输出答案
    return 0;
}

2.求最少优惠券使用数量

自行输入用例:
商品价格,若干种面值的优惠券(第一个数是种类数量)
65
4 30 20 10 5
输出使用优惠券最少的最优方案
(需要先排序)从大到小,这里省略

function dikou(total, youhui) {
    function _dikou(t, q, tmp) {
        // console.log(tmp, q, q.length - 1)
        if (t < q[q.length - 1] || tmp.length >= 5) return tmp

        if (t - q[0] >= 0) {
            tmp.push(q[0])
            return _dikou(t - q[0], q, tmp)
        } else {
            return _dikou(t, q.slice(1), tmp)
        }
    }

    let result = []
    return _dikou(total, youhui, result)
}

console.log(dikou(65, [30, 20, 10, 5]))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 有一棵二叉树,请设计一个算法,按照层次打印这棵二叉树。 给定二叉树的根结点root,请返回打印结果,结果按照...
    Crystalajj阅读 4,052评论 0 2
  • 说明: 本文中出现的所有算法题皆来自牛客网-剑指Offer在线编程题,在此只是作为转载和记录,用于本人学习使用,不...
    秋意思寒阅读 1,170评论 1 1
  • 动态规划 111. 爬楼梯思路类似斐波那契数列注意考虑第 0 阶的特殊情况 272. 爬楼梯 II思路类似上题,只...
    6默默Welsh阅读 2,456评论 0 1
  • 没喝你奶长大,(首先我不是3P婴孩更不是试管婴儿,我妈没奶水)你生了我,我叫你妈,洗衣服时,记得掏一下口袋,烧...
    米宝联阅读 648评论 2 8
  • 赵丽颖与金翰主演的《倾城时光》腾讯视频突破了50亿的播放量,男主角金瀚走红,这部剧的关注度和话题热度也是一直居高不...
    醉飞雁阅读 948评论 0 1