【LeetCode】2552. 统计上升四元组

server/2024/10/18 8:36:25/

给你一个长度为 n 下标从 0 开始的整数数组 nums ,它包含 1 到 n 的所有数字,请你返回上升四元组的数目。

如果一个四元组 (i, j, k, l) 满足以下条件,我们称它是上升的:

0 <= i < j < k < l < n 且
nums[i] < nums[k] < nums[j] < nums[l] 。


思路:1324型不等式,需要先确定一组关系以降低复杂度。这里确定32,及j与k。那么可以转换为对于j,遍历(0,n-1)。对于k遍历(n-1,j+1),如果nums[j]<nums[k],那么此处可以作为l,则sub++。如果nums[j]>nums[k],那么ans+=prev[nums[k]*sub。prev[x]为小于x的数量。对于每一个nums[j],将prev[nums[j]+1, n]加一即可。

class Solution {public long countQuadruplets(int[] nums) {/**i,j,k,lnums[i]<nums[k]<nums[j]<nums[l]nums[i]<nums[k]nums[j]<nums[l]j<k约束性质, ans = prev[x] * sufprev[x]指小于x的数量, for j in (0,n)for k in (n-1, j)*/int n = nums.length;long ans = 0;int[] prev = new int[n+1];for(int j=0; j<n; j++) {// 每次更新sufint suf = 0;for(int k=n-1; k>j; k--) {if(nums[j]>nums[k]) {// 因为nums[i]<nums[k]ans += prev[nums[k]] * suf;} else {// k更大,此处可以作为lsuf ++;}}for(int x=nums[j]+1; x<=n; x++) {prev[x] ++;}}return ans;}
}

http://www.ppmy.cn/server/116950.html

相关文章

从GreaterWMS学习仓库管理系统

前言 客户并不知道&#xff08;确切地&#xff09;他们需要什么&#xff1f; 需要通过需求分析工具和技术&#xff0c;利用宽进严出的需求池&#xff0c;需求验证使用原型测试&#xff0c;场景分析&#xff0c;专家评审&#xff0c;交叉检查等手段&#xff0c;经过充分验证的需…

停车场小程序如何实现分账功能?

智慧停车平台为什么迫切需要分账功能的原因&#xff0c;通过清结算系统提供的服务商分账功能&#xff0c;可以有效提高交易环节的分账效率。平台方只需要在后台配置好与各服务商、业主等多方分账规则&#xff0c;待交易订单形成后&#xff0c;清结算系统会自动化分账&#xff0…

springboot 单独新建一个文件实时写数据,当文件大于100M时按照日期时间做文件名进行归档

要在 Spring Boot 中实现实时写入数据到文件&#xff0c;并在文件大小大于 100MB 时按照日期时间归档&#xff0c;主要步骤如下&#xff1a; 文件写入功能&#xff1a;设置一个日志文件&#xff0c;实时写入数据。文件大小检测&#xff1a;在写入数据时检测文件大小&#xff0…

基于HTML+JS+CSS+Echarts实现的设备环境监测可视化平台前端整套模板

效果图 基于HTMLJSCSSEcharts实现的设备环境监测可视化平台前端整套模板。可用过修改源码快速完成需求。 源码结构 下载地址

【Hadoop|MapReduce篇】Hadoop序列化概述

1. 什么是序列化 序列化就是把内存中的对象&#xff0c;转换成字节序列&#xff08;或其他数据传输协议&#xff09;以便于存储到磁盘&#xff08;持久化&#xff09;和网络传输。 反序列化就是将收到的字节序列&#xff08;或其他数据传输协议&#xff09;或者磁盘的持久化数…

Linux系统使用Docker安装DockerUI并实现远程管理本地容器无需公网IP

文章目录 前言1. 安装部署DockerUI2. 安装cpolar内网穿透3. 配置DockerUI公网访问地址4. 公网远程访问DockerUI5. 固定DockerUI公网地址 前言 DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基…

Mybatis-plus进阶篇(一)

文章目录 一.条件构造器二.功能详解1. allEq使用范围方法签名:参数说明示例 一.条件构造器 MyBatis-Plus 提供了一套强大的条件构造器&#xff08;Wrapper&#xff09;&#xff0c;用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件&#xff0…

Linux云计算 |【第二阶段】SHELL-DAY5

主要内容&#xff1a; awk命令、内置变量&#xff08;FS、$0、$1、$2、NF、NR&#xff09;、过滤时机&#xff08;BEGIN{}、{}、END{}&#xff09;、处理条件&#xff08;正则、&&、||、~\!~、等&#xff09;、awk数组、监控脚本、安全检测脚本 一、awk介绍 awk 是一…