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

算法题:870. 优势洗牌

该算法是临时想出来的,Java代码的实现在时间上不占优,之后有时间要优化一下,目前就是给大家提供一下思路。

解题思路:田忌赛马的思想 + 贪心法。

Step1. 对两个数组进行排序。

Step2. 同时遍历排序后的nums2和nums1,将num1中刚好超过nums2当前值的值放到对应的位置,而不超过nums2当前值的值放到最后面去,因为反正这些值超不过nums2,不如把num1中较小的值用来对应nums2中较大的值。

Java代码

import java.util.Arrays;
import java.util.Comparator;
import java.util.stream.IntStream;public class AdvantageCount {public static void main(String[] args) {Solution sol = new Solution();System.out.println(Arrays.toString(sol.advantageCount(new int[]{2,7,11,15}, new int[]{1,10,4,11})));System.out.println(Arrays.toString(sol.advantageCount(new int[]{12,24,8,32}, new int[]{13,25,32,11})));}
}class ArrayIndexComparator implements Comparator<Integer> {private final Integer[] A;public ArrayIndexComparator(Integer[] arr) {this.A = arr;}public int compare(Integer o1, Integer o2) {return A[o1].compareTo(A[o2]);}
}class Solution {public int[] advantageCount(int[] nums1, int[] nums2) {int n = nums1.length;// int[] -> Integer[]Integer[] nums2Integers =  Arrays.stream(nums2).boxed().toArray(Integer[]::new);// 排序后返回原索引Integer[] nums2Indexs = new Integer[n];IntStream.range(0, n).forEach(val -> nums2Indexs[val] = val);Arrays.sort(nums2Indexs, new ArrayIndexComparator(nums2Integers));int[] new_nums1 = new int[n];Arrays.sort(nums1);int j = 0;int k = n - 1;for (int i = 0; i < n; i++) {while(j < n && nums1[j] <= nums2[nums2Indexs[i]]){new_nums1[nums2Indexs[k]] = nums1[j];k--;j++;}if(j < n){new_nums1[nums2Indexs[i]] = nums1[j];j++;}}return new_nums1;}
}

完整题目

870. 优势洗牌

给定两个长度相等的数组 nums1 和 nums2nums1 相对于 nums2 的优势可以用满足 nums1[i] > nums2[i] 的索引 i 的数目来描述。

返回 nums1 的任意排列,使其相对于 nums2 的优势最大化。

示例 1:

输入:nums1 = [2,7,11,15], nums2 = [1,10,4,11]
输出:[2,11,7,15]

示例 2:

输入:nums1 = [12,24,8,32], nums2 = [13,25,32,11]
输出:[24,32,8,12]

提示:

  • 1 <= nums1.length <= 10^5
  • nums2.length == nums1.length
  • 0 <= nums1[i], nums2[i] <= 10^9

 

相关文章:

算法题:870. 优势洗牌

该算法是临时想出来的&#xff0c;Java代码的实现在时间上不占优&#xff0c;之后有时间要优化一下&#xff0c;目前就是给大家提供一下思路。 解题思路&#xff1a;田忌赛马的思想 贪心法。 Step1. 对两个数组进行排序。 Step2. 同时遍历排序后的nums2和nums1&#xff0c;将…...

[架构之路-252/创业之路-83]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 企业应用信息系统集成

目录 第一章 什么是企业应用信息系统集成What 1.1 简介 1.2 架构 二、为什么需要企业应用信息系统集成Why 三、如何实现企业应用信息系统集成 3.1 步骤 3.2 企业应用集成的层次 3.3 业务流程重组 第一章 什么是企业应用信息系统集成What 1.1 简介 企业应用信息系统集…...

MFC发送http https以及json解析

域名解析成IP char szWeb[128] "www.baidu.com";struct hostent *pHost NULL;pHost gethostbyname(szWeb);//完成主机名到域名的解析char *IP inet_ntoa(*((struct in_addr *)pHost->h_addr));CString ipStr IP;请求三部曲&#xff1a; 1、CInternetSession…...

UE5加载websocket模块为空

今天测试UE 发现工程启动不了&#xff0c;后来看到原来是websocket模块无法加载。 解决的它的方法很简单&#xff0c;这种问题一般会出现在源码版本的引擎或者是停电了&#xff0c;导致UElaunch版本损坏&#xff0c;解决方法是来到源码版本的引擎 这个目录下&#xff1a; D:\…...

学习 Python 数据可视化,如何快速入门?

Python 是一种非常流行的编程语言&#xff0c;具有简单易学、高效、丰富的库和工具等特点。其中&#xff0c;数据可视化是 Python 的一个重要应用领域&#xff0c;可以帮助人们更好地理解和分析数据。本文将介绍如何快速入门 Python 数据可视化&#xff0c;以及常用的可视化工具…...

XUbuntu22.04之simplenote支持的Markdown语法总结(一百九十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…...

JAVA深化篇_26——Apache commons-io工具包的使用

Apache commons-io工具包的使用 Apache基金会介绍 Apache软件基金会&#xff08;也就是Apache Software Foundation&#xff0c;简称为ASF&#xff09;&#xff0c;是专门为支持开源软件项目而办的一个非盈利性组织。在它所支持的Apache项目与子项目中&#xff0c;所发行的软…...

centos 7 kafka2.6单机安装及动态认证SASL SCRAM配置

目录 1.kfaka安装篇 1.1 安装jdk 1.2安装kafka 2.安全篇 2.1 kafka安全涉及3部份&#xff1a; 2.2 Kafka权限控制认证方式 2.3 SASL/SCRAM-SHA-256 配置实例 2.3.1 创建用户 2.3.2 创建 JAAS 文件及配置 3.测试 3.1 创建测试用户 3.2 配置JAAS 文件 3.2.1 生产者配…...

TrafficWatch 数据包嗅探器工具

TrafficWatch 是一种数据包嗅探器工具&#xff0c;允许您监视和分析 PCAP 文件中的网络流量。它提供了对各种网络协议的深入了解&#xff0c;并可以帮助进行网络故障排除、安全分析等。 针对 ARP、ICMP、TCP、UDP、DNS、DHCP、HTTP、SNMP、LLMNR 和 NetBIOS 的特定于协议的数据…...

MySQL Binlog实战应用之一

一、前言 开发业务系统尤其是与财务相关的系统&#xff0c;需要记录每一笔变更操作的日志&#xff0c;这一般有两种实现方案。 1、代码中通过AOP实现&#xff0c;提供注解跟踪记录日志&#xff0c;这种方案能够比较清晰地以业务角度记录操作日志&#xff0c;但记录变更前的旧…...

【MySQL】MVCC机制(undo log,read view)

文章目录 前言一. 预备知识二. 模拟MVCC三. Read View四. RC与RR的本质区别结束语 前言 MVCC&#xff08;多版本并发控制&#xff09;是一种用来解决读-写冲突的无锁并发控制 MVCC为事务分配单向增长的事务ID&#xff0c;为每个修改保存一个版本&#xff0c;版本与事物ID相关联…...

gma 2 教程(三)坐标参考系统:3.投影方法

安装 gma&#xff1a;pip install gma 地图投影是利用一定数学法则把地球表面的经、纬线转换到平面上的理论和方法。由于地球是一个赤道略宽两极略扁的不规则的梨形球体&#xff0c;故其表面是一个不可展平的曲面&#xff0c;所以运用任何数学方法进行这种转换都会产生误差和变…...

蓝桥杯每日一题2023.11.2

题目描述 等差素数列 - 蓝桥云课 (lanqiao.cn) 题目分析 对于此题我们需要求出最小的公差并且长度为10&#xff0c; 1.确保序列开始为素数 2.确定枚举的个数 注意&#xff1a;序列中数只是d的变化&#xff0c;可以通过此计算将开始数字后9个数字都计算出来&#xff0c;d是…...

Leetcode67二进制求和

1104 代码&#xff1a; class Solution {public String addBinary(String a, String b) {StringBuffer ans new StringBuffer();int n Math.max(a.length(),b.length()),carry 0;for(int i0;i<n;i){carry i < a.length()?(a.charAt(a.length()-1-i)-0):0;carry i…...

线性代数 第五章 特征值与特征向量

一、特征值定义 二、特征值求法 定义法&#xff1b;&#xff1b;相似。 三、特征向量求法 定义法&#xff1b;基础解系法&#xff1b;&#xff1b;相似。 四、特征值性质 不同特征值的特征向量线性无关k重特征值至多有k个线性无关的特征向量 五、相似的定义 若&#xff…...

Python嵌入式数据库 / 轻量级数据库 / 小型数据库介绍(SQLite、Pandas DataFrame、TinyDB)(python数据库)

文章目录 Python嵌入式数据库/轻量级数据库介绍什么是嵌入式数据库/轻量级数据库&#xff1f;SQLitePandasTinyDB总结 Python嵌入式数据库/轻量级数据库介绍 在构建应用程序时&#xff0c;数据存储是必不可少的一部分。传统的方式是使用如MySQL、PostgreSQL这样的重量级数据库…...

USB PD v1.0快速充电通信原理

1 原理 本篇文章讲的快速充电是指USB论坛所发布的USB Power Delivery快速充电规范&#xff08;通过VBUS直流电平上耦合FSK信号来请求充电器调整输出电压和电流的过程&#xff09;&#xff0c;不同于本人发布的另一篇文章所讲的高通Quick Charger 2.0规范&#xff0c;因为高通QC…...

【华为】路由器以PPPoE拨号接入广域网

组网需求 用户希望以PPPoE拨号方式接入广域网&#xff0c;如图1所示&#xff0c;Router作为PPPoE客户端&#xff0c;得到PPPoE服务器的认证后获得IP地址&#xff0c;实现用户接入互联网的需求。内网网关地址&#xff08;即VLANIF1接口的IP地址&#xff09;为10.137.32.1/24。 …...

Linux内核分析(一)--内核架构和子系统

目录 一、引言 二、内核架构 ------>2.1、kernel源码获取 ------>2.2、cpuinfo ------>2.3、内核体系结构 ------>2.4、内核主要组件 三、内核源码及子系统 ------>3.1、整体结构与子系统 ------>3.2、cpuinfo ------>3.3、整体结构与子系统 -…...

【PyQt学习篇 · ⑨】:QWidget -控件交互

文章目录 是否可用是否显示/隐藏是否编辑是否为活跃窗口关闭综合案例信息提示状态提示工具提示“这是什么”提示 焦点控制单个控件角度父控件角度 是否可用 setEnabled(bool)&#xff1a;该函数用于设置QWidget控件的可用性&#xff0c;参数bool为True表示该控件为可用状态&…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...