收藏清单--排序

2023-10-31

LeetCode

收藏清单

给你一个数组 favoriteCompanies ,其中 favoriteCompanies[i] 是第 i 名用户收藏的公司清单(下标从 0 开始)。

请找出不是其他任何人收藏的公司清单的子集的收藏清单,并返回该清单下标。下标需要按升序排列。

示例 1:

输入:favoriteCompanies = [["leetcode","google","facebook"],["google","microsoft"],["google","facebook"],["google"],["amazon"]]
输出:[0,1,4] 
解释:
favoriteCompanies[2]=["google","facebook"] 是 favoriteCompanies[0]=["leetcode","google","facebook"] 的子集。
favoriteCompanies[3]=["google"] 是 favoriteCompanies[0]=["leetcode","google","facebook"] 和 favoriteCompanies[1]=["google","microsoft"] 的子集。
其余的收藏清单均不是其他任何人收藏的公司清单的子集,因此,答案为 [0,1,4] 。

示例 2:

输入:favoriteCompanies = [["leetcode","google","facebook"],["leetcode","amazon"],["facebook","google"]]
输出:[0,1] 
解释:favoriteCompanies[2]=["facebook","google"] 是 favoriteCompanies[0]=["leetcode","google","facebook"] 的子集,因此,答案为 [0,1] 。

示例 3:

输入:favoriteCompanies = [["leetcode"],["google"],["facebook"],["amazon"]]
输出:[0,1,2,3]

提示:

  • 1 <= favoriteCompanies.length <= 100
  • 1 <= favoriteCompanies[i].length <= 500
  • 1 <= favoriteCompanies[i][j].length <= 20
  • favoriteCompanies[i] 中的所有字符串 各不相同 。
  • 用户收藏的公司清单也 各不相同 ,也就是说,即便我们按字母顺序排序每个清单, favoriteCompanies[i] != favoriteCompanies[j] 仍然成立。
  • 所有字符串仅包含小写英文字母。

解法:直接遍历

解题思路:

利用Java的set来判断一个清单是否是另一个清单的子集

代码如下:

class Solution
{
    public List<Integer> peopleIndexes(List<List<String>> favoriteCompanies) {
        List<Integer> result = new ArrayList<>();
        int n = favoriteCompanies.size();
        for (int i = 0; i < n; i++) 
        {
            boolean flag = true;
            for (int j = 0; j < n; j++) 
            {
                if (i == j) 
                {
                    continue;
                }
                List<String> companies1 = favoriteCompanies.get(i);
                List<String> companies2 = favoriteCompanies.get(j);
                Set<String> set = new HashSet<>(companies2);
                if (set.containsAll(companies1)) 
                {
                    flag = false;
                    break;
                }
            }
            if (flag) 
            {
                result.add(i);
            }
        }
        return result;
    }
}

优化后的

class Solution {
    public List<Integer> peopleIndexes(List<List<String>> favoriteCompanies) {
        int n = favoriteCompanies.size();
        Set<String>[] arr = new Set[n];
        for (int i = 0; i < n; i++) 
        {
            arr[i] = new HashSet(favoriteCompanies.get(i));
        }
        List<Integer> ans = new ArrayList<>();
        for (int i = 0; i < n; i++) 
        {
            boolean flag = true;
            for (int j = 0; j < n; j++) 
            {
                if (i == j) 
                {
                    continue;
                }
                if (arr[j].containsAll(arr[i])) 
                {
                    flag = false;
                    break;
                }
            }
            if (flag) ans.add(i);
        }

        return ans;
    }
}

感想

说实话,这道题让我有点懵,两个for循环一开始就想到了,但是我觉得效率可能太低了吧,所以一直在想其他方法,没想到最后是直接用最粗暴的方法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

收藏清单--排序 的相关文章

随机推荐

  • oracle case when的使用方法

    大家都知道Case when的用法 一旦满足了某一个WHEN 则这一条数据就会退出CASE WHEN 而不再考虑其他CASE 文章来详细的介绍了case when的用法并举例说明了 Case when 的用法 简单Case函数 简单CASE
  • C++ 接口(抽象类)

    C 接口是使用抽象类来实现的 接口描述了类的行为和功能 而不需要完成类的特定实现 且抽象类与数据抽象互不混淆 如果类中至少有一个函数被声明为纯虚函数 则这个类就是抽象类 数据抽象则是一个把实现细节与相关的接口分离开的概念 如果类中至少有一个
  • Ubuntu18.04安装ROS教程bug解决办法

    Ubuntu18 04安装ROS教程bug解决办法 写在前面 一 配置源文件bug 二 rosdep update 报错 三 安装ROS中出现bash opt ros melodic setup bash 没有那个文件或目录或者bash o
  • linux设置时间为24小时制,设置时区

    1 查看系统时间 root localhost localdomain date Thu Feb 4 14 24 18 CST 2010 时区是CST 为了彻底弄明白GMT UTC CST 我查阅了下网上的相关教程 进行整理 一般来说 UT
  • Android 应用内部存储之应用文件缓存

    前言 Android 应用内部存储之应用文件缓存的重点在最后总结 如果想快速学习 直接查看最后总结 在向手机上保存数据 一般是把数据保存在sdcard中的 大部分应用是直接在sdcard的根目录下创建一个文件夹 然后把数据保存在该文件夹中
  • 一个TCP长连接设备管理后台工程(四)---jtt808协议解析

    协议解析 从前面内容我们可以发现 808协议是一个很典型的协议格式 固定字段 变长字段 其中固定字段用来检测一个帧格式的完整性和有效性 所以一般会包含一下内容 帧头 变长字段对应的长度 校验 由于这一段的数据格式固定 目的单一 所以处理起来
  • vue/react/node项目通过eslint检查语法规范

    首先 我们打开终端 全局安装依赖 npm install g eslint 然后 以管理员身份运行项目终端 输入 eslint init 然后 这里 在初始化时会问我们想如何使用它 分别对应 仅检查语法 检查语法并发现问题 检查语法 发现问
  • 面试官:为啥索引可以让查询变快?

    您好 我是路人 更多优质文章见个人博客 http itsoku com 概述 人类存储信息的发展历程大致经历如下 由于是个人凭着自己理解总结的 因此可能不一定精确 但是毋庸置疑的是 在当代 各大公司机构部门的数据都是维护在数据库当中的 数据
  • 如何在Kubernetes中安装metrics-server以获取Node节点、Pod容器资源监控指标?

    关注 WeiyiGeek 公众号 设为 特别关注 每天带你玩转网络安全运维 应用开发 物联网IOT学习 本章目录 Kubernetes中安装metrics server以获取客户端资源监控指标 原文地址 https blog weiyige
  • 系统分析师笔记

    信息系统生命周期 1 立项阶段 企业全局 形成概念 需求分析 2 开发阶段 系统规划 系统分析 系统设计 系统实施 系统验收 3 运维阶段 通过验收和移交之后 4 消亡阶段 更新改造 功能扩展 报废重建 1 系统规划 初步调查 分析系统目标
  • bash设置成vim命令模式

    如果你习惯在vim下编辑文件或者写代码 那么对Vim命令肯定很熟悉 自然希望在bash输入命令的时候也能够使用这些命令 使得shell命令输入也便利起来 默认情况下 bash是Emacs模式的 在 bashrc里面添加一个设置 set o
  • python的name属性_Python中__name__属性的妙用

    在Python中 每一个module文件都有一个built in属性 name 这个 name 有如下特点 1 如果这个module文件是被别的文件导入的 那么 该 name 属性的值就是这个module文件的名字 2 如果这个module
  • elastic-job开源框架使用中遇到的 架包冲突错误

    最近在运行部门一个新的框架 该框架是用maven管理jar包的聚合工程 在进行运行elastic job相关的一个子项目时 报了如下的错误 Exception in thread main org springframework beans
  • 使用Django开发一个简易的留言板

    Django在线留言板demo 环境 ubuntu16 04 python3 django1 11 1 创建项目 django admin py startproject message 进入项目message 2 创建APP python
  • 伪代码和流程图

    一 逻辑是写代码的基础 逻辑是什么 三段论 命题一 JS中所有函数都是由function构造的 命题二 Function Object Array 推论 Function Object Array是由Function构造的 二 用三种语句表
  • Keras LSTM层return_sequences参数的坑

    具体用法我就不赘述了 可以参考中文文档https keras io zh layers recurrent lstm 我主要记录一下坑 网络结构如下 model Sequential model add Embedding 257 150
  • Windows安装PyTorch并配置pycharm

    Windows安装PyTorch并配置pycharm 安装PyTorch 1 下载Anaconda并安装 https www anaconda com 2 打开Anacnda Prompt创建分区并安装pytorch 创建分区并激活 con
  • 【转】c# WebApi之解决跨域问题:Cors

    c WebApi之解决跨域问题 Cors 版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net lwpoor123 article deta
  • ensp的下载与安装

    ensp的下载与安装 1 安装环境 Win 10系统安装 也可虚拟机安装 2 安装 下载链接 现在官网不让下载了 我这里有2个版本的ensp windows7和windows10的 是免费的 ensp免费下载 阿杰邦尼的博客 CSDN博客
  • 收藏清单--排序

    LeetCode 收藏清单 给你一个数组 favoriteCompanies 其中 favoriteCompanies i 是第 i 名用户收藏的公司清单 下标从 0 开始 请找出不是其他任何人收藏的公司清单的子集的收藏清单 并返回该清单下