美文网首页
餐厅过滤器问题

餐厅过滤器问题

作者: 多喝热开水 | 来源:发表于2020-05-27 15:30 被阅读0次

继续没事刷leetcode ,是时候到了培养自信的时候了,终于遇到了一个简单的算法问题
看到这么个题目:

餐厅过滤器
给你一个餐馆信息数组 restaurants,其中 restaurants[i] = [idi, ratingi, veganFriendlyi, pricei, distancei]。你必须使用以下三个过滤器来过滤这些餐馆信息。

其中素食者友好过滤器 veganFriendly 的值可以为 true 或者 false,如果为 true 就意味着你应该只包括 veganFriendlyi 为 true 的餐馆,为 false 则意味着可以包括任何餐馆。此外,我们还有最大价格 maxPrice 和最大距离 maxDistance 两个过滤器,它们分别考虑餐厅的价格因素和距离因素的最大值。

过滤后返回餐馆的 id,按照 rating 从高到低排序。如果 rating 相同,那么按 id 从高到低排序。简单起见, veganFriendlyi 和 veganFriendly 为 true 时取值为 1,为 false 时,取值为 0 。

示例 1:

输入:restaurants = [[1,4,1,40,10],[2,8,0,50,5],[3,8,1,30,4],[4,10,0,10,3],[5,1,1,15,1]], veganFriendly = 1, maxPrice = 50, maxDistance = 10
输出:[3,1,5] 
解释: 
这些餐馆为:
餐馆 1 [id=1, rating=4, veganFriendly=1, price=40, distance=10]
餐馆 2 [id=2, rating=8, veganFriendly=0, price=50, distance=5]
餐馆 3 [id=3, rating=8, veganFriendly=1, price=30, distance=4]
餐馆 4 [id=4, rating=10, veganFriendly=0, price=10, distance=3]
餐馆 5 [id=5, rating=1, veganFriendly=1, price=15, distance=1] 
在按照 veganFriendly = 1, maxPrice = 50 和 maxDistance = 10 进行过滤后,我们得到了餐馆 3, 餐馆 1 和 餐馆 5(按评分从高到低排序)。 

示例 2:

输入:restaurants = [[1,4,1,40,10],[2,8,0,50,5],[3,8,1,30,4],[4,10,0,10,3],[5,1,1,15,1]], veganFriendly = 0, maxPrice = 50, maxDistance = 10
输出:[4,3,2,1,5]
解释:餐馆与示例 1 相同,但在 veganFriendly = 0 的过滤条件下,应该考虑所有餐馆。

终于遇到了个感觉上很简单的题目了,关键是它的标注还是道 难度中等的题目

image.png
这不给他刷了高兴一下先
先分析一波:
其实题目本身很简单,就是过滤器,先过滤是否素食,然后过滤价格和距离,最后再排序啊,兄弟们,被打击的自信终于可以找回来了!
直接上代码: 兄弟们,继续老样子,leetcode 没有OC啊,果断还是先用JS代替下
var filterRestaurants = function(restaurants, veganFriendly, maxPrice, maxDistance) {
    
    let result = restaurants;
    // 先过滤素食者
    if (veganFriendly) {
        result = restaurants.filter(function(n) {
            if (n[2] == true) {
                return true;
            }
            return false;
        });
    }
    
    // 过滤价格和距离
    result = result.filter(function(n) {
            let flag = false;
            if (n[3] <= maxPrice && n[4] <= maxDistance) {
                return true;
            }
            return false;
        });

    // 开始排序 先rating 高到低 相同则id高到低
    result.sort(function(a,b){
        // 降序排列
        if (b[1] != a[1]) {
            return b[1]-a[1];    //升序
        }
        return b[0]-a[0]; // 升序
    });
  
  // 最后再把餐厅的id展示出来
    var retsultId = result.map(function(x){
        return x[0];
    });
    return retsultId;
};

一通操作成功完成,点击提交看看:


image.png

完美,这道题目很简单啊,感觉配不上他上面显示的难度,感觉是个简单的题目。
做完了之后常规反思一下啊,不对劲啊,这感觉像是有优化的空间啊,
1.过滤素食者
2.过滤价格和距离
3.开始排序 先rating 高到低 相同则id高到低
4.展示餐厅的id
感觉上 1,2 可以合并一起过滤,简单合并后再来:

var filterRestaurants = function(restaurants, veganFriendly, maxPrice, maxDistance) {
    let result = restaurants;
    // 过滤素食者 价格和距离
    var result = restaurants.filter(item => {
         return (item[2] == veganFriendly || veganFriendly == 0) && (item[3] <= maxPrice) && (item[4] <= maxDistance);
    });

    // 开始排序 先rating 高到低 相同则id高到低
    result.sort(function(a,b){
        // 降序排列
        if (b[1] != a[1]) {
            return b[1]-a[1];    //升序
        }
        return b[0]-a[0];
    });
    var retsultId = result.map(function(x){
        return x[0];
    });
    return retsultId;
};

好了,大致上就是这样解决一个简单的过滤器问题。

题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/filter-restaurants-by-vegan-friendly-price-and-distance

相关文章

  • 餐厅过滤器问题

    继续没事刷leetcode ,是时候到了培养自信的时候了,终于遇到了一个简单的算法问题看到这么个题目: 餐厅过滤器...

  • leetcode1333 餐厅过滤器

    题目 餐厅过滤器 分析 按照锁给的条件排序即可。 代码

  • 《问题餐厅》

    真正值得我们花时间去关注的,是陪着我们一起经历,一起付出的人们。 “努力工作,我只是想努力做好自己喜欢的工作,日日...

  • 问题餐厅

    因为没有计划,所以又没有按照正常的事情来完成呢。离散数学的作业没有写好,物理作业没有写好,电子电工作业没有写好,然...

  • Spring Cloud内置的Zuul过滤器详解

    问题 Spring Cloud默认为Zuul编写并启用了一些过滤器,这些过滤器有什么作用呢? 为什么说@Enabl...

  • 使用Redis+AOP优化权限管理功能,这波操作贼爽!

    问题重现 在mall-security模块中有一个过滤器,当用户登录后,请求会带着token经过这个过滤器。这个过...

  • VUE过滤器和计算属性

    过滤器主要分为全局过滤器和局部过滤器。 全局过滤器如下: 局部过滤器如下: 计算属性如下: 过滤器中获取日期: 计...

  • Angular 2要学的东西

    先是架构问题,然后路由问题。然后请求问题。然后用ts写方法的问题。service 指令 过滤器 组建的使用

  • 五、过滤器的概念

    一、问题引入 JSP和Servlet都要设置编码方式,有更方便的方法吗?可以使用过滤器 二、过滤器的使用 三、过滤...

  • AngularJs过滤器问题

    1、uppercase,lowercase 大小写转换 {{"lower cap string"|uppercas...

网友评论

      本文标题:餐厅过滤器问题

      本文链接:https://www.haomeiwen.com/subject/bkbwahtx.html