1583. 统计不开心的朋友

1583. 统计不开心的朋友

给你一份 n 位朋友的亲近程度列表,其中 n 总是 偶数 。

对每位朋友 i,preferences[i] 包含一份 按亲近程度从高到低排列 的朋友列表。换句话说,排在列表前面的朋友与 i 的亲近程度比排在列表后面的朋友更高。每个列表中的朋友均以 0 到 n-1 之间的整数表示。

所有的朋友被分成几对,配对情况以列表 pairs 给出,其中 pairs[i] = [xi, yi] 表示 xi 与 yi 配对,且 yi 与 xi 配对。

但是,这样的配对情况可能会是其中部分朋友感到不开心。在 x 与 y 配对且 u 与 v 配对的情况下,如果同时满足下述两个条件,x 就会不开心:

x 与 u 的亲近程度胜过 x 与 y,且
u 与 x 的亲近程度胜过 u 与 v
返回 不开心的朋友的数目 。

示例 1:

输入:n = 4, preferences = [[1, 2, 3], [3, 2, 0], [3, 1, 0], [1, 2, 0]], pairs = [[0, 1], [2, 3]]
输出:2
解释:
朋友 1 不开心,因为:

  • 1 与 0 配对,但 1 与 3 的亲近程度比 1 与 0 高,且
  • 3 与 1 的亲近程度比 3 与 2 高。
    朋友 3 不开心,因为:
  • 3 与 2 配对,但 3 与 1 的亲近程度比 3 与 2 高,且
  • 1 与 3 的亲近程度比 1 与 0 高。
    朋友 0 和 2 都是开心的。
    示例 2:

输入:n = 2, preferences = [[1], [0]], pairs = [[1, 0]]
输出:0
解释:朋友 0 和 1 都开心。
示例 3:

输入:n = 4, preferences = [[1, 3, 2], [2, 3, 0], [1, 3, 0], [0, 2, 1]], pairs = [[1, 3], [0, 2]]
输出:4

提示:

2 <= n <= 500
n 是偶数
preferences.length == n
preferences[i].length == n - 1
0 <= preferences[i][j] <= n - 1
preferences[i] 不包含 i
preferences[i] 中的所有值都是独一无二的
pairs.length == n/2
pairs[i].length == 2
xi != yi
0 <= xi, yi <= n - 1
每位朋友都 恰好 被包含在一对中

解题思路

  • 使用数组l[i][j][k]=true记录对于i来说j的亲密度大于k
  • 使用map记录下,每个朋友配对的另一位朋友
  • 对每一位朋友x,检查其余的所有朋友u,y为x的配对朋友,v为u的配对朋友
  • 如果存在x 与 u 的亲近程度胜过 x 与 y,u 与 x 的亲近程度胜过 u 与 v,那么就将x和u加入不开心朋友的集合

代码

class Solution {public int unhappyFriends(int n, int[][] preferences, int[][] pairs) {//l[i][j]boolean[][][] l=new boolean[n][n][n];for (int k=0;k<n;k++) {for (int i=0;i<n-2;i++)for (int j=i+1;j<n-1;j++)l[k][preferences[k][i]][preferences[k][j]]=true;}Map<Integer,Integer>map=new HashMap<>();for (int[] pair : pairs) {map.put(pair[0],pair[1]);map.put(pair[1],pair[0]);}int cnt=0;Set<Integer> set=new HashSet<>();for (int i=0;i<n;i++){int o1=i,o2=map.get(i);for (int j=0;j<n;j++){if (j==o1||j==o2) continue;if (l[i][j][o2]&&l[j][i][map.get(j)]){set.add(i);set.add(j);}}}return set.size();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/390313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uva 247(floyd传递闭包)

为什么&#xff0c;逗号后面&#xff0c;还有空格........ #include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <vector> #include <map> using namespace std; const int maxn50; int d[maxn][max…

VS Code 的常用快捷键和插件

注:文章摘自 风行天下一万号 - 博客园 vs code 的常用快捷键 1、注释&#xff1a; 单行注释&#xff1a;[ctrlk,ctrlc] 或 ctrl/取消单行注释&#xff1a;[ctrlk,ctrlu] (按下ctrl不放&#xff0c;再按k u)多行注释&#xff1a;[altshiftA]多行注释&#xff1a;/**2、移动行&a…

python包numpy_NumPy Python科学计算软件包的终极指南

python包numpyNumPy (pronounced "numb pie") is one of the most important packages to grasp when you’re starting to learn Python.NumPy(读作“麻木派”)是您开始学习Python时要掌握的最重要的软件包之一。 The package is known for a very useful data str…

NGINX原理 之 SLAB分配机制(转)

1 引言 众所周知&#xff0c;操作系统使用伙伴系统管理内存&#xff0c;不仅会造成大量的内存碎片&#xff0c;同时处理效率也较低下。SLAB是一种内存管理机制&#xff0c;其拥有较高的处理效率&#xff0c;同时也有效的避免内存碎片的产生&#xff0c;其核心思想是预分配。其按…

apk之间数据共享的方式

1、四大组件之ContentProvider大法2、shareUserId3、apk均去远端获取配置文件&#xff08;或接口&#xff09;4、AIDL&#xff08;bindService&#xff09;5、SharePreference设置为MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE模式&#xff0c;由于存在安全问题&#xff0c;已被…

蓝桥杯java 基础练习 十六进制转十进制

问题描述从键盘输入一个不超过8位的正的十六进制数字符串&#xff0c;将它转换为正的十进制数后输出。注&#xff1a;十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入FFFF样例输出65535import java.math.BigInteger; import java.util.Scanner;public …

dynamic web module消失不见

2019独角兽企业重金招聘Python工程师标准>>> 方法1&#xff1a;在project Facets选项中勾选Dynamic Web Module即可 方法2&#xff1a; 我用eclipse对项目进行修改名称&#xff0c;修改成功后。项目就没有Deployment Descriptor&#xff08;如下图红色框中&#xff…

576. 出界的路径数

576. 出界的路径数 给你一个大小为 m x n 的网格和一个球。球的起始坐标为 [startRow, startColumn] 。你可以将球移到在四个方向上相邻的单元格内&#xff08;可以穿过网格边界到达网格之外&#xff09;。你 最多 可以移动 maxMove 次球。 给你五个整数 m、n、maxMove、star…

telnet命令发送邮件

下面的例子是用qq的smtp服务器。 set localecho 本地回显启用 telnet smtp.qq.com 25 220 smtp.qq.com Esmtp QQ Mail Server helo sis 250 smtp.qq.com//服务器返回250 smtp.qq.com STARTTLS 220 Ready to start TLS//服务器返回 220 准备开启TLS通讯 auth login 334 VXNlcm5h…

myelcipse和maven搭建项目

偷懒一下&#xff0c;完了补充 转载&#xff1a;https://www.cnblogs.com/jr1260/p/6438811.html https://www.cnblogs.com/yangmingyu/p/6908519.html https://www.cnblogs.com/henuyuxiang/p/6288476.html 转载于:https://www.cnblogs.com/0914lx/p/8342343.html

551. 学生出勤记录

551. 学生出勤记录 I 给你一个字符串 s 表示一个学生的出勤记录&#xff0c;其中的每个字符用来标记当天的出勤情况&#xff08;缺勤、迟到、到场&#xff09;。记录中只含下面三种字符&#xff1a; ‘A’&#xff1a;Absent&#xff0c;缺勤 ‘L’&#xff1a;Late&#xff…

JavaScript实现职责链模式

什么是职责链模式 职责链模式的定义是&#xff1a;使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系&#xff0c;将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有一个对象处理它为止。举个例子&#xff1a;当你从…

Metrics介绍和Spring的集成

参考&#xff1a; http://colobu.com/2014/08/08/Metrics-and-Spring-Integration/ https://www.cnblogs.com/yangecnu/p/Using-Metrics-to-Profiling-WebService-Performance.html

配置 aws cli_AWS CLI教程–如何安装,配置和使用AWS CLI了解您的资源环境

配置 aws cliHow to get exactly the account and environment information you need to manage your AWS account using just the AWS CLI如何仅使用AWS CLI准确获取管理AWS账户所需的账户和环境信息 Installing the AWS CLI is actually quite simple. The best way to get …

grep递归查找头文件_Grep命令教程–如何使用递归查找在Linux和Unix中搜索文件

grep递归查找头文件grep stands for Globally Search For Regular Expression and Print out. It is a command line tool used in UNIX and Linux systems to search a specified pattern in a file or group of files. grep代表全局搜索正则表达式并打印出来 。 它是UNIX和Li…

C++ 前置声明

&#xff08;一&#xff09;class的前置声明 class的前置声明有两种。 pre.hclass PreA {}; main.hclass PreA; class Main {};//或者 class Main {class PreA* A; }; (二) struct前置声明 struct的前置声明只能用第一种。 &#xff08;三&#xff09; 有typedef的前置声明 Pr…

2.18 特殊权限set_uid 2.19 特殊权限set_gid 2.20 特殊权限stick_bit 2.21 软链接文件 2.22 硬连接文件...

2019独角兽企业重金招聘Python工程师标准>>> 特殊权限set_uid set_uid:该权限针对二进制可执行文件&#xff0c;使文件在执行阶段具有文件所有者的权限&#xff1b; 通俗一点讲就是&#xff0c;普通用户想要访问一个没有其他用户可执行权限的目录时&#xff0c;暂时…

345. 反转字符串中的元音字母

345. 反转字符串中的元音字母 给你一个字符串 s &#xff0c;仅反转字符串中的所有元音字母&#xff0c;并返回结果字符串。 元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’&#xff0c;且可能以大小写两种形式出现。 示例 1&#xff1a; 输入&#xff1a;s “hello” 输…

通过制作数字桌面游戏和Web应用程序学习JavaScript

Building 2D games can be a great way to learn JavaScript, especially when working through the basics of complex tabletop game logic.制作2D游戏可能是学习JavaScript的好方法&#xff0c;尤其是在研究复杂的桌面游戏逻辑基础时。 In this series, I’m going to intr…

【HAVENT原创】Node Express API 通用配置

为什么80%的码农都做不了架构师&#xff1f;>>> ( 基于 Express 4.x ) 启动文件 /app.js&#xff1a; var express require(express); var bodyParser require(body-parser); var proxy require(http-proxy-middleware); var path require(path);var index re…