第 371 场 LeetCode 周赛题解

A 找出强数对的最大异或值 I

在这里插入图片描述

模拟

class Solution {
public:
    int maximumStrongPairXor(vector<int> &nums) {
        int n = nums.size();
        int res = 0;
        for (auto x: nums)
            for (auto y: nums)
                if (abs(x - y) <= min(x, y))
                    res = max(res, x ^ y);
        return res;
    }
};

B 高访问员工

在这里插入图片描述
在这里插入图片描述

哈希+排序:用哈希表记录各个员工所有的访问时间,并对访问时间排序,然后遍历排序后的相邻三元组判断

class Solution {
public:
    vector<string> findHighAccessEmployees(vector<vector<string>> &access_times) {
        unordered_map<string, vector<int>> li;
        for (auto &it: access_times)//时间转化为总秒数
            li[it[0]].push_back(getint(it[1][0]) * 600 + getint(it[1][1]) * 60 + getint(it[1][2]) * 10 + getint(it[1][3]));
        vector<string> res;
        for (auto &[k, v]: li) {
            sort(v.begin(), v.end());
            for (int i = 2; i < v.size(); i++)
                if (v[i] - v[i - 2] < 60) {
                    res.push_back(k);
                    break;
                }
        }
        return res;
    }

    inline int getint(char ch) {
        return ch - '0';
    }
};

C 最大化数组末位元素的最少操作次数

在这里插入图片描述
在这里插入图片描述

模拟:分两种情况:1)不交换 n u m s 1 [ n − 1 ] nums1[n - 1] nums1[n1] n u m s 2 [ n − 1 ] nums2[n - 1] nums2[n1] ;2)交换 n u m s 1 [ n − 1 ] nums1[n - 1] nums1[n1] n u m s 2 [ n − 1 ] nums2[n - 1] nums2[n1]。每种情况下遍历 i ∈ [ 0 , n ) i\in [0,n) i[0,n) ,若 n u m s 1 [ i ] > n u m s 1 [ n − 1 ] nums1[i] > nums1[n-1] nums1[i]>nums1[n1] n u m s 2 [ i ] > n u m s 2 [ n − 1 ] nums2[i] > nums2[n-1] nums2[i]>nums2[n1],则交换 n u m s 1 [ i ] nums1[i] nums1[i] n u m s 2 [ i ] nums2[i] nums2[i],若交换后仍有 n u m s 1 [ i ] > n u m s 1 [ n − 1 ] nums1[i] > nums1[n-1] nums1[i]>nums1[n1] n u m s 2 [ i ] > n u m s 2 [ n − 1 ] nums2[i] > nums2[n-1] nums2[i]>nums2[n1],则当前情况无解。

class Solution {
public:
    int inf = 1e7;

    int get(vector<int> nums1, vector<int> nums2) {
        int res = 0;
        for (int i = 0; i < nums1.size(); i++)
            if (nums1[i] > nums1.back() || nums2[i] > nums2.back()) {
                swap(nums1[i], nums2[i]);
                res++;
                if (nums1[i] > nums1.back() || nums2[i] > nums2.back())
                    return inf;
            }
        return res;
    }

    int minOperations(vector<int> &nums1, vector<int> &nums2) {
        int res = get(nums1, nums2);//不交换 nums1[n - 1] 和 nums2[n - 1]的情况
        swap(nums1.back(), nums2.back());
        res = min(res, 1 + get(nums1, nums2));//交换 nums1[n - 1] 和 nums2[n - 1]的情况
        return res == inf ? -1 : res;
    }
};

D 找出强数对的最大异或值 II

在这里插入图片描述
在这里插入图片描述

滑动窗口 + 字典树:不妨设 x ≤ y x\le y xy ,则满足 2 × x ≤ y 2\times x\le y 2×xy x x x y y y 可构成强数对,对数组排序后枚举 y y y,同时
用滑动窗口维护满足条件的 x x x ,过程中用字典树维护当前满足条件的 x x x 的集合,同时通过字典树查询与 y y y 构成的强数对的最大异或值

class Trie {//字典树
public:
    vector<Trie *> next = vector<Trie *>(2, nullptr);
    int cnt = 0;//子树中的数的数目

    void insert(int v) {//往字典树中插入v
        Trie *cur = this;
        for (int i = 19; i >= 0; i--) {
            cur->cnt++;//更新计数
            int t = v >> i & 1;
            if (!cur->next[t])
                cur->next[t] = new Trie();
            cur = cur->next[t];
        }
        cur->cnt++;//更新计数
    }

    void del(int v) {//删除字典树中的v
        Trie *cur = this;
        for (int i = 19; i >= 0; i--) {
            cur->cnt--;//更新计数
            int t = v >> i & 1;
            cur = cur->next[t];
        }
        cur->cnt--;//更新计数
    }

    int query(int y) {//查询与y构成的强数对的最大异或值
        int res = 0;
        Trie *cur = this;
        for (int i = 19; i >= 0; i--) {
            int t = y >> i & 1;
            if (!cur->next[t ^ 1] || cur->next[t ^ 1]->cnt == 0)
                cur = cur->next[t];
            else {
                cur = cur->next[t ^ 1];
                res |= 1 << i;
            }
        }
        return res;
    }
};

class Solution {
public:
    int maximumStrongPairXor(vector<int> &nums) {
        int n = nums.size();
        sort(nums.begin(), nums.end());
        Trie trie;
        int res = 0;
        for (int iy = 0, ix = 0; iy < n; iy++) {//枚举y (nums[iy])
            trie.insert(nums[iy]);//插入y
            while (2 * nums[ix] < nums[iy])//更新滑动窗口左端点
                trie.del(nums[ix++]);//删除无法与y构成强数对的x
            res = max(res, trie.query(nums[iy]));//查询与y构成的强数对的最大异或值
        }
        return res;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通信世界扫盲基础二(原理部分)

上次我们刚学习了关于通信4/G的组成和一些通识&#xff0c;今天我们来更深层次了解一些原理以及一些新的基础~ 目录 专业名词 LTE(4G系统) EPC s1 E-UTRAN UE UU X2 eNodeB NR(5G系统) NGC/5GC NG NG-RAN Xn gNodeB N26接口 手机的两种状态 空闲态 连接态 …

Halcon WPF 开发学习笔记(3):WPF+Halcon初步开发

文章目录 前言在MainWindow.xaml里面导入Halcon命名空间WPF简单调用Halcon创建矩形 前言 本章会简单讲解如何调用Halcon组件和接口&#xff0c;因为我们是进行混合开发模式。即核心脚本在平台调试&#xff0c;辅助脚本C#直接调用。 在MainWindow.xaml里面导入Halcon命名空间 …

Leetcode—765.情侣牵手【困难】

2023每日刷题&#xff08;二十七&#xff09; Leetcode—765.情侣牵手 并查集置换环思路 参考自ylb 实现代码 class Solution { public:int minSwapsCouples(vector<int>& row) {int n row.size();int len n / 2;vector<int> p(len);iota(p.begin(), p.…

探索项目管理软件的多重用途和益处

项目管理软件俨然成了当下项目管理话题中的热门词条&#xff0c;作为一个辅助性管理工具&#xff0c;项目管理软件有什么用&#xff1f;真的值得购入吗&#xff1f; 什么是项目管理软件 顾名思义&#xff0c;项目管理软件就是指在项目管理过程使用的各种软件工具。项目管理软件…

「Verilog学习笔记」4bit超前进位加法器电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 timescale 1ns/1nsmodule lca_4(input [3:0] A_in ,input [3:0] B_in ,input C_1 ,output wire CO ,output wire [3:0] …

docker启动某个镜像一直restarting状态

因为微服务学习的需要&#xff0c;就需要在虚拟机中安装一下Nacos&#xff0c;可哪儿能想到使用docker ps命令一直显示nacos的状态是restarting。 经过一番测试&#xff0c;发现并不是执行代码的问题。上网查了一下&#xff0c;也找不到合适的答案&#xff0c;终于查到了是doc…

高级项目管理总结

目录 一、背景介绍二、思路&方案三、过程1.升维思考2.结构化3.心理、知识阶段检验4.微观 四、总结 一、背景介绍 天性对学习对考试充满敌意的我&#xff0c;转变为依赖学习谋生&#xff0c;再到后来书中自有黄金屋&#xff0c;到现在学习对我而言就如同一日三餐&#xff1…

【linux】centos7 yum安装mysql 5.7

查看系统中是否已安装 MySQL 服务 yum list installed | grep mysql下载 mysql57的 yum 源 wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm查看下载 ll 安装源 rpm -ivh mysql57-community-release-el7-8.noarch.rpm安装 MySQL yum install mysql…

TMSRL

Z是学到的子空间表征 辅助信息 作者未提供代码

HPV专家谭巍主任讲述:家庭日常有效预防HPV病毒的办法

HPV&#xff0c;即人乳头瘤病毒&#xff0c;是一种常见且具有传染性的微小DNA病毒。可以通过直接接触感染&#xff0c;也可以通过间接接触感染。在家庭生活中&#xff0c;预防HPV病毒传播十分重要。为了提高大众防范意识&#xff0c;下面劲松HPV防治诊疗中心主任谭巍将介绍一些…

yolo系列报错(持续补充ing)

文章目录 export GIT_PYTHON_REFRESHquiet解决 没有pt权重文件解决 python文件路径报错解决 读取文件列名报错解决 导入不同文件夹出错解决 megengine没有安装解决然后你发现它竟然还没有用 export GIT_PYTHON_REFRESHquiet 设置环境变量 GIT_PYTHON_REFRESH &#xff0c;这个…

JavaScript从入门到精通系列第三十五篇:JavaScript中的DOM简介

文章目录 前言 1&#xff1a;对象分类 2&#xff1a;宿主对象 一&#xff1a;DOM 1&#xff1a;dom简介 2&#xff1a;Dom概念图示 二&#xff1a;节点 1&#xff1a;节点概述 2&#xff1a;常用节点分类 3&#xff1a;节点模型示意图 4&#xff1a;节点属性 5&…

fetch函数没有默认超时时间的配置吗

chatgpt&#xff1a; https://chat.xutongbao.top/ 截至我知识的最后更新时间&#xff08;2023年&#xff09;&#xff0c;原生的 fetch API 在大多数浏览器中并没有内置的默认超时时间。这意味着如果你没有明确地设置一个超时期限&#xff0c;fetch 请求可能会永远挂起&…

数据结构-静态查找、二分查找、分块查找

静态查找 在静态查找表中&#xff0c;我们只允许下面两件事&#xff1a; 1.在查找表中查找某个记录是否在表中 2.查找表中记录的各个属性 动态查找 在动态查找表中&#xff0c;我们允许四件事&#xff1a; 1.在查找表中查找某个记录是否在表中 2.查找表中记录的各个属性…

国际阿里云:Windows实例中数据恢复教程!!!

在处理磁盘相关问题时&#xff0c;您可能会碰到操作系统中数据盘分区丢失的情况。本文介绍了Windows系统下常见的数据盘分区丢失的问题以及对应的处理方法&#xff0c;同时提供了使用云盘的常见误区以及最佳实践&#xff0c;避免可能的数据丢失风险。 前提条件 已注册阿里云账…

财务报告是什么

财务报告是什么 财务报告是企业对外提供的反映企业某一特定日期的财务状况和某一会计期间的经营成果、现金流量等会计信息的文件。 根据财务报告的定义&#xff0c;财务报告具有以下几层含义&#xff1a;一是财务报告应当是对外报告&#xff0c;其服务对象主要是投资者、债权人…

HCIA-经典综合实验(一)

经典综合实验&#xff08;一&#xff09; 实验拓扑配置步骤第一步&#xff1a;配置二层VLAN第二步&#xff1a;配置IP地址第三步&#xff1a;配置DHCP服务第四步&#xff1a;配置路由协议OSPF第五步&#xff1a;配置ACLNATTelnet 配置验证测试PC1能不能telnet登录到R1测试所有P…

Ubuntu取消sudo的输入密码

Ubuntu最近要安装软件&#xff0c;每次sudo都要输入一次密码&#xff0c;感觉很麻烦&#xff0c;于是想能不能设置为不输入密码&#xff0c;在网上找了一下解决办法。 主要参考这篇文章&#xff1a; Ubuntu取消sudo时输入密码 上面这篇文章使用的是vim&#xff0c;但是按照博…

外部董事的职责与作用

&#xff08;一&#xff09;监督公司的管理与运营 外部董事在公司治理中的一个重要职责就是监督公司的管理与运营&#xff0c;监督公司管理层是否有效执行公司战略、规章制度和内控机制&#xff0c;帮助公司识别管理和运营上的问题&#xff0c;从而提供正确的决策和解决方案。比…

泉峰控股发布业务白皮书, 释放中国芯片企业要发展成全球领先的信心与决心

近日,多元化芯片全球供应商泉峰控股发布了一份题为《致力于中国芯片产业自立自强》的业务白皮书。白皮书系统阐述了泉峰控股企业发展策略和业务规划,充分体现出中国芯片企业要在全球范围内实现技术突破、市场扩张的信心与决心。 白皮书首先分析了当前全球芯片产业的发展态势。在…