复试 || 就业day14(2024.01.10)算法篇

news2025/4/16 7:08:09

文章目录

  • 前言
  • 字符串中第二大的数字
  • 字符串中不同整数的数目
  • 判断句子是否为全字母句
  • 长度为三且各字符不同的子字符串
  • 检查是否区域内所有整数都被覆盖*
  • 重新分配字符使所有字符串都相等
  • 可以输入的最大单词数
  • 检查是否所有字符出现次数相同
  • 差的绝对值为 K 的数对数目
  • 至少在两个数组中出现的值

前言

💫你好,我是辰chen,本文旨在准备考研复试或就业
💫文章题目大多来自于 leetcode,当然也可能来自洛谷或其他刷题平台
💫欢迎大家的关注,我的博客主要关注于考研408以及AIoT的内容
🌟 仅给出C++版代码

以下的几个专栏是本人比较满意的专栏(大部分专栏仍在持续更新),欢迎大家的关注:

💥ACM-ICPC算法汇总【基础篇】
💥ACM-ICPC算法汇总【提高篇】
💥AIoT(人工智能+物联网)
💥考研
💥CSP认证考试历年题解

字符串中第二大的数字


题目链接:字符串中第二大的数字

C++版AC代码:

class Solution {
public:
    int a[10];
    int secondHighest(string s) {
        for (auto x : s) 
            if (x >= '0' && x <= '9') 
                a[x - '0'] = 1;
        int cnt = 0, res = -1;
        for (int i = 9; i >= 0; -- i ) {
            if (!cnt && a[i]) cnt ++;
            else if (cnt && a[i]) {
                res = i;
                break;
            }
        }
        return res;
    }
};

字符串中不同整数的数目


题目链接:字符串中不同整数的数目

C++版AC代码:

class Solution {
public:
    int numDifferentIntegers(string word) {
        unordered_set<string> s;
        for (int i = 0; i < word.size(); i ++ ) {
            if (isdigit(word[i])) {
                if (i == word.size() - 1 ) {  // 特判最后一个字母
                    s.insert(string(1, word[i]));
                    continue;
                }
                if (word[i] == '0' && isdigit(word[i + 1])) continue;
                int j = i;
                while (j < word.size() && isdigit(word[j])) 
                    j ++;
                string num = word.substr(i, j - i);
                i = j - 1;
                s.insert(num);
            }
        }
        return s.size();
    }
};

判断句子是否为全字母句


题目链接:判断句子是否为全字母句

C++版AC代码:

class Solution {
public:
    bool checkIfPangram(string sentence) {
        if (sentence.size() < 26) return false;
        unordered_set<char> s;
        for (auto c : sentence) s.insert(c);
        for (char c = 'a'; c <= 'z'; ++ c )
            if (s.find(c) == s.end())
                return false;
        return true; 
    }
};

长度为三且各字符不同的子字符串


题目链接:长度为三且各字符不同的子字符串

C++版AC代码:

class Solution {
public:
    int countGoodSubstrings(string s) {
        if (s.size() < 3) return 0;
        int res = 0;
        for (int i = 0; i < s.size() - 2; i ++ ) {
            if (s[i] != s[i + 1] && s[i + 1] != s[i + 2] && s[i] != s[i + 2])
                res ++;
        }
        return res;
    }
};

检查是否区域内所有整数都被覆盖*


题目链接:检查是否区域内所有整数都被覆盖

C++版AC代码:

class Solution {
public:
    bool isCovered(vector<vector<int>>& ranges, int left, int right) {
        unordered_set<int> s;
        for (auto range : ranges) 
            for (int i = range[0]; i <= range[1]; i ++ ) 
                s.insert(i);
        for (int i = left; i <= right; i ++ ) 
            if (s.find(i) == s.end())
                return false;
        return true;
    }
};

C++版AC代码:

差分的思维解题:

class Solution {
public:
    int ad[55];
    bool isCovered(vector<vector<int>>& ranges, int left, int right) {
        for (auto range : ranges) {
            int st = range[0], ed = range[1];
            ad[st] ++, ad[ed + 1] --;      // 差分
        }
        for (int i = 1; i <= 50; ++ i ) ad[i] += ad[i - 1];  // 前缀和
        for (int i = left; i <= right; ++ i )
            if (!ad[i]) return false;
        return true; 
    }
};

重新分配字符使所有字符串都相等


题目链接:重新分配字符使所有字符串都相等

C++版AC代码:

class Solution {
public:
    bool makeEqual(vector<string>& words) {
        unordered_map<char, int> m;
        for (auto word : words)
            for (auto c : word)
                m[c] ++;
        int n = words.size();
        for (auto it : m) 
            if (it.second % n)
                return false;
        return true;
    }
};

可以输入的最大单词数


题目链接:可以输入的最大单词数

C++版AC代码:

class Solution {
public:
    int canBeTypedWords(string text, string brokenLetters) {
        unordered_set<char> s;
        for (auto c : brokenLetters) s.insert(c);
        int res = 0;
        for (int i = 0; i < text.size(); i ++ ) {
            int j = i;
            while (j < text.size() &&  text[j] != ' ') j ++;
            string word = text.substr(i, j - i);
            i = j;
            for (auto c : word) 
                if (s.find(c) != s.end()) {
                    res --;
                    break;
                }
            res ++;
        }
        return res;
    }
};

检查是否所有字符出现次数相同


题目链接:检查是否所有字符出现次数相同

C++版AC代码:

class Solution {
public:
    bool areOccurrencesEqual(string s) {
        unordered_map<char, int> m;
        for (auto c : s) m[c] ++;
        int num = m[s[0]];
        for (auto it : m) 
            if (it.second != num)
                return false;
        return true;
    }
};

差的绝对值为 K 的数对数目


题目链接:差的绝对值为 K 的数对数目

C++版AC代码:

class Solution {
public:
    int countKDifference(vector<int>& nums, int k) {
        unordered_map<int, int> m;
        for (auto k : nums) m[k] ++;
        // a - b = k, b - a = k
        // b = a - k, b = a + k
        int res = 0;
        for (auto num : nums) {
            int num1 =  num - k, num2 = num + k;
            if (m.count(num1)) res += m[num1];
            if (m.count(num2)) res += m[num2];
            m[num] -= 1;     // 保证题干中的 i < j
        }
        return res;
    }
};

至少在两个数组中出现的值


题目链接:至少在两个数组中出现的值

C++版AC代码:

💩山代码,着急去玩,就这样不改了😁

class Solution {
public:
    vector<int> twoOutOfThree(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3) {
        // 预处理nums1, nums2, nums3,使其内部元素唯一
        // 处理nums1
        unordered_set<int> unique1(nums1.begin(), nums1.end());
        nums1.assign(unique1.begin(), unique1.end());
        // 处理nums2
        unordered_set<int> unique2(nums2.begin(), nums2.end());
        nums2.assign(unique2.begin(), unique2.end());
        // 处理nums3
        unordered_set<int> unique3(nums3.begin(), nums3.end());
        nums3.assign(unique3.begin(), unique3.end());

        unordered_set<int> s;
        unordered_set<int> tmpres;
        for (auto num : nums1) s.insert(num);
        for (auto num : nums2) {
            if (s.find(num) != s.end()) 
                tmpres.insert(num);
            else s.insert(num);
        }
        for (auto num : nums3) {
            if (s.find(num) != s.end()) 
                tmpres.insert(num);
            else s.insert(num);
        }
        vector<int> res(tmpres.begin(), tmpres.end());
        return res;
    }
};

在这里插入图片描述

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

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

相关文章

PHP开发日志 ━━ php8.3安装与使用组件Xdebug

今天开头写点历史&#xff1a; 二十年前流行asp&#xff0c;当时用vb整合常用函数库写了一个dll给asp调用&#xff0c;并在此基础上开发一套仿windows界面的后台管理系统&#xff1b;后来asp逐渐没落&#xff0c;于是在十多年前转投php&#xff0c;不久后用php写了一套mvc框架&…

压缩编码之变换的选择之离散余弦变换(DCT)和离散傅立叶变换(DFT)——数字图像处理

原理 变换的选择是一个关键的考量因素&#xff0c;它决定了数据是如何被压缩的。选择变换时考虑以下几个重要原则&#xff1a; 数据去关联性&#xff1a;变换的目的之一是减少数据中的相关性。例如&#xff0c;在图像压缩中&#xff0c;像素间往往高度相关。通过适当的变换&a…

Redis-Cluster 与 Redis 集群的技术大比拼

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Redis-Cluster 与 Redis 集群的技术大比拼 前言概念与原理对比Redis-Cluster&#xff1a;基于哈希槽的分布式解决方案传统 Redis 集群&#xff1a;主从架构下的数据分片方式 搭建与配置的异同Redis-Cl…

跟着小德学C++之进程信息记录

嗨&#xff0c;大家好&#xff0c;我是出生在达纳苏斯的一名德鲁伊&#xff0c;我是要立志成为海贼王&#xff0c;啊不&#xff0c;是立志成为科学家的德鲁伊。最近&#xff0c;我发现我们所处的世界是一个虚拟的世界&#xff0c;并由此开始&#xff0c;我展开了对我们这个世界…

JS逆向之加密参数定位

文章目录 前言加密参数的处理步骤加密参数的定位方法搜索断点XHR断点DOM断点EVENT断点 hook 前言 当我们对网络请求进行抓包分析之后&#xff0c;需要用开发者工具对加密参数进行全局搜索。当搜索不到加密参数的时候&#xff0c;应该采取什么解决方法去定位。 还有一个应用场…

Tomcat-快速使用

关于Tomcat的概念及来由在Tomcat基本知识中进行了介绍&#xff0c;下面我们直接上手快速使用起来。 一、快速使用 &#xff08;1&#xff09;tomcat下载 &#xff08;2&#xff09;解压缩 &#xff08;3&#xff09;启动程序 &#xff08;4&#xff09;访问tomcat&#xff1a…

Windows和Linux中检查端口是否被占用

一、windows 1、查询端口占用情况 cmd > netstat -ano 2、查询8080端口是否被占用 cmd > netstat -ano|findstr 8080 3、查询哪个程序占用了端口 cmd > tasklist|findstr PID 4、终止该占用进程 cmd > ntsd -c q -p PID 二、Linux 1、查询8080端口是否被占用…

windows10 装docker和docker compose

一.windows环境准备 开启过程中的问题&#xff0c;进入bios修复 二.docker下载安装 1.下载 Docker Desktop: The #1 Containerization Tool for Developers | Docker 下载最新版有问题&#xff0c;下载老版本试试 Docker Desktop release notes | Docker Docs 2.安装 三.do…

GitHub pull request(傻瓜式入门版)

基础入门版 pull request一、fork项目二、clone代码到本地三、进入到克隆的项目目录下四、列出所有分支五、创建一个本地分支&#xff0c;并追踪远程项目分支六、查看当前分支七、与远程仓库建立连接八、与上游仓库建立连接八、同步最新代码九、修改代码并提交十、提交pr pull …

虚幻引擎:开创视觉与创意的新纪元

先看看据说虚幻5做出来的东西吧&#xff1a; 虚幻引擎5&#xff01;&#xff01;&#xff01;4K画质PS5实机演示&#xff01; 好了&#xff0c;用文字认识一下吧&#xff1a; 虚幻引擎5.3对UE5的核心工具集作了进一步优化&#xff0c;涉及渲染、世界构建、程序化内容生成&…

服务器执行rm命令时自动记录到审计日志中

目的 当在服务器上执行类似于 rm 命令时&#xff0c;自动记录该命令执行的时间&#xff0c;在哪里执行的&#xff0c;删除的什么文件&#xff0c;记录到审计日志中&#xff0c;能够查找到某些文件丢失原因 配置 # 需要root权限&#xff0c;sudo不行&#xff0c;这里假设执行…

麦芯(MachCore)开发教程1 --- 设备软件中间件

黄国强 2024/1/10 acloud163.com 对任何公司来说&#xff0c;在短时间内开发一款高质量设备专用软件&#xff0c;是一件不太容易做到的事情。麦芯是笔者发明的一款设备软件中间件产品。麦芯致力于给设备厂商提供一个开发工具和平台&#xff0c;让客户快速高效的开发自己的设备专…

PyQt5零基础入门(二)——QLabel控件

前言 QLabel控件可以视为是一个标签项&#xff0c;具有显示文本、图像的作用。在本篇文章中将介绍QLabel控件的常见用法。 例子 显示文本 import sys from PyQt5.QtWidgets import *if __name__ "__main__":app QApplication([])label QLabel(Hello world!)la…

了解结构体以及结构体数组

C语言的结构体你真的了解吗&#xff1f; 一起来看一下吧&#xff01;&#xff01;&#xff01; 1.结构体是啥&#xff1f; 结构体是多种数据类型的组合体 2.格式&#xff08;一般放在主函数前&#xff0c;也就是int main()前面 &#xff09; 关键字 结构体名字 {成员列表…

网络安全B模块(笔记详解)- Web信息收集

Web信息收集 1.通过Kali对服务器场景Linux进行Web扫描渗透测试(使用工具nikto,查看该命令的完整帮助文件),并将该操作使用命令中固定不变的字符串作为Flag提交; Flag:nikto -H 2.通过Kali对服务器场景Linux进行Web扫描渗透测试(使用工具nikto,扫描目标服务器8080端口,…

springCould中的Bus-从小白开始【11】

目录 &#x1f9c2;1.Bus是什么❤️❤️❤️ &#x1f32d;2.什么是总线❤️❤️❤️ &#x1f953;3.rabbitmq❤️❤️❤️ &#x1f95e;4.新建模块3366❤️❤️❤️ &#x1f373;5.设计思想 ❤️❤️❤️ &#x1f37f;6.添加消息总线的支持❤️❤️❤️ &#x1f9…

Redis不同环境缓存同一条数据,数据内部值不同

背景 现实中&#xff0c;本地环境&#xff08;dev&#xff09;和开发环境&#xff08;feature&#xff09;会共同使用相同的中间件&#xff08;本篇拿Redis举例&#xff09;&#xff0c;对于不同环境中的&#xff0c;图片、视频、语音等资源类型的预览地址url&#xff0c;需要配…

Ncast盈可视 高清智能录播系统 IPSetup.php信息泄露+RCE漏洞复现(CVE-2024-0305)

0x01 产品简介 Ncast盈可视 高清智能录播系统是广州盈可视电子科技有限公司一种先进的音视频录制和播放解决方案,旨在提供高质量、高清定制的录播体验。该系统采用先进的摄像和音频技术,结合强大的软件平台,可以实现高清视频录制、多路音频采集、实时切换和混音、定制视频分…

thinkphp学习07-数据库的数据查询

单数据查询 单条数据查询&#xff0c;一般是一维数组 Db::table()中 table 必须指定完整数据表&#xff08;包括前缀&#xff09;&#xff0c;如果配置了表前缀&#xff0c;Db::name()中可以忽略 如果希望只查询一条数据&#xff0c;可以使用 find()方法&#xff0c;需指定 wh…

赋能智慧农业生产,基于YOLOv7开发构建农业生产场景下油茶作物成熟检测识别系统

AI赋能生产生活场景&#xff0c;是加速人工智能技术落地的有利途径&#xff0c;在前文很多具体的业务场景中我们也从实验的角度来尝试性地分析实践了基于AI模型来助力生产生活制造相关的各个领域&#xff0c;诸如&#xff1a;基于AI硬件实现农业作物除草就是一个比较熟知的场景…