LeetCode周赛总结 第277场

2023-11-12

本文同步发布在我的个人博客 LeetCode周赛总结 第277场 欢迎访问
本次周赛没想到比上周还要简单,前三题都可以用非常简单的方法快速解决,第四题如果想对了方向其实也比较简单。

元素计数

题目链接

元素计数

解题思路

相当基础的题目,要同时具有一个严格较小元素和一个严格较大元素,只需要保证这个数 num 满足 num > minVal && num < maxVal即可。

解题代码

class Solution {
public:
    int countElements(vector<int>& nums) {
        int minVal = INT32_MAX, maxVal = INT32_MIN;
        for (int i = 0; i < nums.size(); i++) {
            minVal = min(minVal, nums[i]);
            maxVal = max(maxVal, nums[i]);
        }
        int res = 0;
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] > minVal && nums[i] < maxVal)
                res++;
        }
        return res;
    }
};

按符号重排数组

题目链接

按符号重排数组

解题思路

最容易想到和实现的方法显然是将正数和负数分别存入两个数组,再合并到一个数组中,虽然这样做空间复杂度比较高,但思路最为简单,代码实现相对较快。

解题代码

class Solution {
public:
    vector<int> rearrangeArray(vector<int>& nums) {
        vector<int> posVec;
        vector<int> negVec;
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] > 0)
                posVec.emplace_back(nums[i]);
            if (nums[i] < 0)
                negVec.emplace_back(nums[i]);
        }
        vector<int> res;
        for (int i = 0; i < posVec.size(); i++) {
            res.emplace_back(posVec[i]);
            res.emplace_back(negVec[i]);
        }
        return res;
    }
};

找出数组中的所有孤独数字

题目链接

找出数组中的所有孤独数字

解题思路

对数字进行统计,考虑使用哈希表 HashMap 存储数组的数据,哈希表的 key 为数组中的数字,value 为该数字出现的次数。

再次遍历数组,对数组的每一个元素 num 判断 HashMap[num] 是否为 1,并且 HashMap[num - 1]HashMap[num + 1] 是否存在,若都满足,则该数字为孤独数字,加入结果中。

解题代码

class Solution {
public:
    vector<int> findLonely(vector<int>& nums) {
        unordered_map<int, int> numsMap;
        for (int i = 0; i < nums.size(); i++) {
            numsMap[nums[i]]++;
        }
        vector<int> res;
        for (int i = 0; i < nums.size(); i++) {
            if (numsMap[nums[i]] == 1) {
                if (numsMap.count(nums[i] - 1) == 0 && numsMap.count(nums[i] + 1) == 0)
                    res.emplace_back(nums[i]);
            }
        }
        return res;
    }
};

基于陈述统计最多好人数

题目链接

基于陈述统计最多好人数

解题思路

本题测试用例中中 2 <= n <= 15,数据量很小,可以考虑直接枚举所有的情况,并检验该情况下是否合理。

所有可能情况个数为 2n,每种情况用二进制数 anan - 1···a0 来表示,an 为 0 代表该情况下 n 角色为 坏人,an 为 1 代表该情况下 n 角色为 好人。

在统计了该情况下的角色情况后,就对其进行验证。由于坏人既可能说真话也可能说假话,因此对其验证没有意义,我们只需要对该情况下的好人进行验证。验证方法是遍历这个好人的陈述,若出现陈述与该情况不符,则该情况不符合条件,不统计其好人的数目。最终遍历所有的情况后,得到符合条件的好人最大数目。

解题代码

class Solution {
public:
    int maximumGood(vector<vector<int>>& statements) {
        int n = statements.size();
        int res = 0;
        for (int i = 0; i < (1 << n); i++) {
            int cnt = 0;
            vector<bool> isGood(n);
            for (int j = 0; j < n; j++) {
                if ((i >> j) & 1) { // 统计状态 i 的好人与坏人
                    isGood[j] = true;
                    cnt++;
                }
                else
                    isGood[j] = false;
            }
            // 验证状态是否合理
            bool isLegal = true;
            for (int j = 0; j < n; j++) {
                if (isGood[j]) { // 若 j 是好人,则遍历他的陈述是否正确
                    for (int k = 0; k < n; k++) {
                        if (statements[j][k] == 1 && !isGood[k]) {
                            isLegal = false;
                            break;
                        }
                        if (statements[j][k] == 0 && isGood[k]) {
                            isLegal = false;
                            break;
                        }
                    }
                }
            }
            if(isLegal)
                res = max(res, cnt);
        }
        return res;
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode周赛总结 第277场 的相关文章

随机推荐

  • 使用Java VisualVM监控远程JVM(远程服务器为linux配置)

    我们经常需要对我们的开发的软件做各种测试 软件对系统资源的使用情况更是不可少 目前有多个监控工具 相比JProfiler对系统资源尤其是内存的消耗是非常庞大 JDK1 6开始自带的VisualVM就是不错的监控工具 这个工具就在JAVA H
  • C++ 函数重载(overroad) 覆盖(override) 隐藏(hide) 的区别

    原文转自 http blog chinaunix net u 15921 showart 227111 html 成员函数被重载的特征 1 相同的范围 在同一个类中 2 函数名字相同 3 参数不同 4 virtual 关键字可有可无 覆盖是
  • 点到UI 不会误点到物体

    这几天在做捕鱼达人游戏时发现 当鼠标点击UI时 炮台的子弹也会发射子弹 这样会影响用户体验 然后网上百度了一波 发现在UGUI系统上 EventSystem提供了一些方法 那就是EventSystem current IsPointerOv
  • ZeroMQ入门

    官网 ZeroMQ 简介 ZeroMQ是一个库 不是消息队列也不是消息中间件 介于应用层和传输层之间 按照TCP IP划分 传统的Socket通信模式需要创建连接 销毁连接 选择协议等一些列操作 而ZeroMQ是在Socket封装一层的并行
  • Java使用多线程查询数据

    目录 前言 实例 前言 什么是进程 进程 是操作系统的概念 一个独立运行的程序 就是一个 进程 什么是线程 线程 是由 进程创建 的 一个进程可以创建任意多的线程 每个线程都包含一些代码 线程中的代码会同主进程或者其他线程 同时运行 什么是
  • 排序算法(六)——希尔排序

    基本思想 希尔排序是基于插入排序的 又叫缩小增量排序 在插入排序中 标记符左边的元素是有序的 右边的是没有排过序的 这个算法取出标记符所指向的数据 存入一个临时变量 接着 在左边有序的数组中找到临时变量应该插入的位置 然后将插入位置之后的元
  • android接入opencv方式

    原网址 https www cnblogs com xiaoxiaoqingyi p 6676096 html Android 接入 OpenCV库的三种方式 OpenCV是一个基于BSD许可 开源 发行的跨平台计算机视觉库 可以运行在Li
  • 按键控制数码管加减清零

    实验说明 实验接线 独立按键模块 gt 单片机管脚 K1 gt P31 K2 gt P30 K3 gt P32 K4 gt P33 未使用 大家可以自己扩展功能 动态数码管模块 gt 单片机管脚 参考动态数码管实验接线 开发攻略内在对应的实
  • 【任务调度系统第二篇】:XXL Job源码分析

    文章目录 写在前面 一 XXL JOB项目源码整体概括 1 源码整体概括说明 2 分析该项目源码时一些必须的知识 2 1 quartz简单介绍 2 2 freemarker前端渲染模板简介 2 3 java基本功修炼 二 xxl job a
  • Vscode编辑器下显示图片遇到的问题

    在编辑器Vscode下显示jpg图片不成功 测试代码和提示错误信息如下图 但是在IDLE中进行如上操作却能正常显示 Python环境为anaconda PIL matplotlib 问题出在什么地方呢
  • 算法1:一个无序的int数组,包含正负数, 排序成:左边为负数 右边为正数

    public class MinusPlubs public static void minusLeftPlusRight int nums int p1 1 boolean firstTime true for int i 0 i lt
  • D2D通信的Matlab关键技术

    D2D通信的Matlab关键技术 D2D Device to Device 通信是一种直接在终端设备之间进行通信的技术 它可以提供高效的通信和资源共享 在本文中 我们将介绍D2D通信的一些关键技术 并使用Matlab提供相应的源代码来实现这
  • 利用Power BI计算组,设计个性化数据标签

    利用Power BI计算组 设计个性化数据标签 知乎 zhihu com https zhuanlan zhihu com p 405532292
  • Exception 开发遇见异常

    1 java lang OutOfmemoryError 原因 常见的有以下几种 1 内存中加载的数据量过于庞大 如一次从数据库取出过多数据 2 集合类中有对对象的引用 使用完后未清空 使得JVM不能回收 3 代码中存在死循环或循环产生过多
  • TCP协议如何保证可靠传输

    TCP的功能是交付数据 所以TCP的可靠就是保证每次数据按序 按时 不丢数据 顺利的交付给对端 可靠不等于安全 TCP尽最大可能的保证数据可靠性 但是没有任何措施保证数据的安全性 所谓安全就是你的数据不会被别人看到或者窃取到 TCP上的数据
  • Ubuntu安装Redis集群(主从+哨兵)

    一 下载 官网 Download Redis 百度云 链接 https pan baidu com s 1sQjpbiFIFhnSpa0 uCP53A 提取码 AA56 版本 redis 6 23 注 本文依旧此博文修改而来 那篇更为详细
  • 使用Java实现七牛云OSS云存储上传图片至指定目录

    使用Java实现七牛云OSS云存储上传图片至指定目录 思路介绍 Controller代码 Util工具类代码 配置类 配置对象QnOssProperties 思路介绍 首先介绍下我的实现思路 前端通过Controller调用上传方法 上传方
  • 深分页优化总结

    前言 最近有面试过也遇到了问关于深分页问题 在这里简单从MySQL ES等方面分享一下自己对该问题认识和总结 一 深分页定义 可以从ES定义上来划分浅分页和深分页的边界 即页数超过10000页为深分页 少于10000页为浅分页 二 MySQ
  • QT打包发布全流程,超详细

    目录 第一步 配置环境变量 这一步不会的可以看我另一篇文章 QT 打包发布之环境变量配置 简单四步搞定 第三步 进行初步测试 主演是看你的程序是否有错 第四步 程序能运行 就可以在上层目录中看到生成了一个release文件夹 第五步 点开文
  • LeetCode周赛总结 第277场

    本文同步发布在我的个人博客 LeetCode周赛总结 第277场 欢迎访问 本次周赛没想到比上周还要简单 前三题都可以用非常简单的方法快速解决 第四题如果想对了方向其实也比较简单 元素计数 题目链接 元素计数 解题思路 相当基础的题目 要同