当前位置: 首页 > wzjs >正文

长沙网站制作培训商城网站建设开发多少钱

长沙网站制作培训,商城网站建设开发多少钱,英语写作网站,厦门网站制作网站建设收费LCR 170. 交易逆序对的总数 - 力扣(LeetCode) 在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一个「交易逆序对」。请设计一个程序,输入一段时间内的股票交易记录 record,返回其中存在的「…

LCR 170. 交易逆序对的总数 - 力扣(LeetCode)

在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一个「交易逆序对」。请设计一个程序,输入一段时间内的股票交易记录 record,返回其中存在的「交易逆序对」总数。

示例 1:

输入:record = [9, 7, 5, 4, 6]
输出:8
解释:交易中的逆序对为 (9, 7), (9, 5), (9, 4), (9, 6), (7, 5), (7, 4), (7, 6), (5, 4)。

提示:

0 <= record.length <= 50000

暴力解法的问题

最直观的解法是双重循环遍历所有可能的 (i, j) 组合,统计满足 i < j 且 record[i] > record[j] 的对数。这种方法的时间复杂度为 O(n²),当数组长度较大(例如 50000)时,显然无法高效处理。

归并排序解法

归并排序的分治思想天然适合解决逆序对问题。在归并排序的合并阶段,可以高效地统计逆序对数目。

归并排序合并阶段的统计逻辑
  1. 分治:将数组分为左右两部分,递归处理左右子数组。
  2. 合并:合并两个有序子数组时,若左子数组的当前元素大于右子数组的当前元素,则左子数组中剩余的所有元素均与该右子数组元素构成逆序对。
  3. 累加:每次发现左子数组元素大于右子数组元素时,累加左子数组剩余元素的个数到总逆序对数目。
代码实现
class Solution {int[] tmp; // 临时数组用于归并排序int ret;   // 统计逆序对总数public int reversePairs(int[] nums) {tmp = new int[nums.length];mergesort(nums, 0, nums.length - 1);return ret;}private void mergesort(int[] nums, int left, int right) {if (left >= right) return;int mid = left + (right - left) / 2;// 递归处理左右子数组mergesort(nums, left, mid);mergesort(nums, mid + 1, right);// 若左子数组最大值 <= 右子数组最小值,无需合并if (nums[mid] <= nums[mid + 1]) return;// 合并两个有序子数组,并统计逆序对int cur1 = left, cur2 = mid + 1, i = 0;while (cur1 <= mid && cur2 <= right) {if (nums[cur1] <= nums[cur2]) {tmp[i++] = nums[cur1++];} else {ret += mid - cur1 + 1; // 统计逆序对数目tmp[i++] = nums[cur2++];}}// 处理剩余元素while (cur1 <= mid) tmp[i++] = nums[cur1++];while (cur2 <= right) tmp[i++] = nums[cur2++];// 将排序后的临时数组复制回原数组for (int j = left; j <= right; j++) {nums[j] = tmp[j - left];}}
}

示例分析

以示例 record = [9, 7, 5, 4, 6] 为例,归并排序的合并过程如下:

  1. 初始分割:数组分为左 [9,7,5] 和右 [4,6]
  2. 处理左子数组
    • 分割为 [9,7] 和 [5],合并时 9 > 7 产生 1 个逆序对。
    • 合并 [7,9] 和 [5]7 > 5 产生 2 个逆序对。
  3. 处理右子数组:合并 [4] 和 [6],无逆序对。
  4. 合并左右子数组
    • 比较 5 和 4,产生 3 个逆序对。
    • 比较 5 和 6,无逆序对。
    • 比较 7 和 6,产生 2 个逆序对。
    • 累计总逆序对数目为 1 + 2 + 3 + 2 = 8。

复杂度分析

  • 时间复杂度:O(n log n),归并排序的时间复杂度。
  • 空间复杂度:O(n),用于归并排序的临时数组。

通过归并排序的分治策略,可以在高效排序的同时统计逆序对数目,从而快速解决大规模数据的逆序对问题。


文章转载自:

http://46WLm3uq.tykLz.cn
http://ROPu7SYu.tykLz.cn
http://t8a841Xb.tykLz.cn
http://9e7U7NKl.tykLz.cn
http://Jh9eZ5Wa.tykLz.cn
http://O69BK1qg.tykLz.cn
http://7R4LqF7E.tykLz.cn
http://kgknvI4S.tykLz.cn
http://6K2oZ0SI.tykLz.cn
http://IMrz9NIy.tykLz.cn
http://bLN8dByu.tykLz.cn
http://GObRVPSs.tykLz.cn
http://VzLMUY9H.tykLz.cn
http://rBGL4SsL.tykLz.cn
http://sCfZFr9r.tykLz.cn
http://eLFe8hrC.tykLz.cn
http://tczgwJ9A.tykLz.cn
http://VL4h5tJK.tykLz.cn
http://6fpL5n8V.tykLz.cn
http://cMdRp0cA.tykLz.cn
http://JRn4pVLr.tykLz.cn
http://1goKq89G.tykLz.cn
http://claUdrHG.tykLz.cn
http://G6bUPcLL.tykLz.cn
http://DCWoJNuJ.tykLz.cn
http://5HKgNKDA.tykLz.cn
http://igDcPFl2.tykLz.cn
http://6bFVvsU2.tykLz.cn
http://4DVYyJKz.tykLz.cn
http://6m9XCQUz.tykLz.cn
http://www.dtcms.com/wzjs/733659.html

相关文章:

  • 网站特色怎么写广州室内设计公司排行榜
  • 网站后台发布文章横琴网站建设公司
  • 番禺建网站免费代理网址
  • 网站不备案可以么广州网站建设报价单
  • 沈阳网站页面设计公司建站赚钱灰色
  • 怎么使网站降权肇庆市场核酸检测
  • 中国制造网官方网站国际站wordpress 密码解密
  • 网站开发是做什么google seo实战教程
  • 大型电子商务网站建设试述网站建设应考虑哪些方面的问题
  • 企业的建站方式中国机械工业建设集团有限公司网站
  • 网站短信通知wordpress将404跳转主页
  • 医院网站建设价格ftp怎么上传网站
  • 架设网站 自己购买服务器网站建设成本图
  • 旅游网站规划设计自己想学做博客网站吗
  • 东莞网站建设部落上海线上引流推广
  • 网站seo具体怎么做?网盘建网站
  • 网站后台密码忘了怎么办网络开发语言的有哪些
  • 自己做的网站图片加载过慢建设银行的官方网站公告
  • 青龙建站教程自学网北京网站建设itcask
  • 北京网站建设推广服wordpress滑块教程
  • 名师工作室网站建设现状调查深圳龙岗是不是很落后
  • 电力建设期刊网站经常维护吗quark搜索引擎入口
  • 茂名网站建设方案开发百度24小时人工电话
  • 台州网站建设哪家便宜wordpress post提交表单
  • 住房与城乡建设部网站打不开网站做多个语言有什么好处
  • 淘宝网站短链接怎么做个人备案网站做盈利合法吗
  • 个人网站建设目标广告设计制作服务方案
  • 深圳市网站建设制作设计平台常州做网站优化
  • 工业风 网站建设聊城专业网站建设公司电话
  • 网站文章怎么更新android开发环境搭建