题解 | #售价的中位数#

题目考察的知识点

  1. 数组(列表)的使用:题目中要求存储价格数据,我们使用数组(或列表)来保存这些数据,并对其进行插入操作和计算中位数的操作。

  2. 排序算法:为了保持数组的有序性,我们需要对新的价格按照一定的排序规则插入到数组中。在代码中,我们使用了二分查找的思想来找到插入位置,并使用数组的splice方法来实现插入操作。

  3. 数组的索引和计算:根据数组的长度和奇偶性,我们可以计算出中位数的位置,并通过数组的索引来获取中位数的值。

题目解答方法的文字分析

对于解答的方法,我们使用了一个insertPrice函数来插入新的价格,并保持数组有序。另外,我们定义了一个getMedian函数来计算当前价格位置为止的中位数。最后,利用这两个函数,我们遍历了价格数组,依次插入价格并计算中位数,并将中位数存入一个medians数组中作为结果。

本题解析所用的编程语言

本题解析所用的编程语言是JavaScript。在JavaScript中,我们可以使用数组来存储和操作数据,并提供了一些数组方法来实现插入、删除、查找等操作。同时,JavaScript也提供了一些数学函数,如Math.floor用于向下取整。

完整且正确的编程代码

function findMedianPrice(prices) {
  // 定义一个数组来存储价格数据
  let priceList = [];

  // 定义一个函数用来插入新的价格并保持数组有序
  function insertPrice(price) {
    let low = 0;
    let high = priceList.length - 1;

    while (low <= high) {
      let mid = Math.floor((low + high) / 2);

      if (priceList[mid] === price) {
        priceList.splice(mid, 0, price);
        return;
      } else if (priceList[mid] < price) {
        low = mid + 1;
      } else {
        high = mid - 1;
      }
    }

    priceList.splice(low, 0, price);
  }

  // 定义一个函数来计算当前价格位置为止的中位数
  function getMedian() {
    let length = priceList.length;
    if (length % 2 === 0) {
      let midIndex1 = length / 2 - 1;
      let midIndex2 = length / 2;
      return (priceList[midIndex1] + priceList[midIndex2]) / 2;
    } else {
      let midIndex = Math.floor(length / 2);
      return priceList[midIndex];
    }
  }

  // 遍历价格数组,依次插入价格并计算中位数
  let medians = [];
  for (let i = 0; i < prices.length; i++) {
    insertPrice(prices[i]);
    medians.push(getMedian());
  }

  return medians;
}

// 测试
let prices = [10, 8, 12, 15, 6, 20];
console.log(findMedianPrice(prices));  // 输出 [10, 9, 10, 11, 10, 11]
题解 | 前端刷题 文章被收录于专栏

题目考察的知识点 题目解答方法的文字分析 本题解析所用的编程语言 完整且正确的编程代码

全部评论

相关推荐

鱼专:别投了,我看到有人点了第二个链接投递,还没退出界面,不合适的邮件就发过来了
点赞 评论 收藏
分享
04-02 10:09
门头沟学院 Java
用微笑面对困难:这里面问题还是很多的,我也不清楚为啥大家会感觉没啥问题。首先就是全栈开发实习9个月的内容都没有java实习生的内容多,1整个技术栈没看出太核心和难点的内容,感觉好像被拉过去打杂了,而且全栈基本上很容易被毙。里面能问的bug是在太多了比如L:继承 BaseMapper 可直接使用内置方法’。请问你的 BaseMapper 是如何扫描实体类注解如果瞬时产生 100 个上传任务,MySQL 的索引设计是否会有瓶颈?你做过分库分表或者索引优化吗?全栈的内容可以针对动态难点去搞,技能特长写在下面吧,你写了这么多技能,项目和实习体现了多少?你可以在项目里多做文章然后把这个放下去,从大致来看实习不算太水,有含金量你也要写上内容针对哨兵里面的节点变化能问出一万个问题,这个很容易就爆了。
提前批简历挂麻了怎么办
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务