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

文章目录

  • 前言
  • 字符串中第二大的数字
  • 字符串中不同整数的数目
  • 判断句子是否为全字母句
  • 长度为三且各字符不同的子字符串
  • 检查是否区域内所有整数都被覆盖*
  • 重新分配字符使所有字符串都相等
  • 可以输入的最大单词数
  • 检查是否所有字符出现次数相同
  • 差的绝对值为 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 + kint 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,使其内部元素唯一// 处理nums1unordered_set<int> unique1(nums1.begin(), nums1.end());nums1.assign(unique1.begin(), unique1.end());// 处理nums2unordered_set<int> unique2(nums2.begin(), nums2.end());nums2.assign(unique2.begin(), unique2.end());// 处理nums3unordered_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.hqwc.cn/news/339058.html

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

相关文章

国内首款支持苹果Find My芯片-伦茨科技ST17H6x

深圳市伦茨科技有限公司&#xff08;以下简称“伦茨科技”&#xff09;发布ST17H6x Soc平台。成为继Nordic之后全球第二家取得Apple Find My「查找」认证的芯片厂家&#xff0c;该平台提供可通过Apple Find My认证的Apple查找&#xff08;Find My&#xff09;功能集成解决方案。…

Vue中的class和style绑定

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介动态绑定class对象语法数组语法 动态绑定style对象语法多重值 ⭐ 写在最后 ⭐ 专栏简介 Vue学习之旅的奇妙世界 欢迎大家来到 Vue 技能树参考资料专栏&#xff01;创建这个专栏的初衷是为了帮助大家更好地应对 Vue.js 技能树的学习…

四川古力未来科技有限公司抖音小店:开启未来商业新篇章

随着科技的飞速发展&#xff0c;商业模式也在不断演变。作为新兴的电商平台&#xff0c;抖音小店以其独特的商业魅力和巨大的市场潜力&#xff0c;成为了众多企业竞相角逐的新战场。四川古力未来科技有限公司作为一家致力于科技创新和应用的企业&#xff0c;紧跟时代步伐&#…

Android学习(四):常用布局

Android学习&#xff08;四&#xff09;&#xff1a;常用布局 五种常用布局 线性布局&#xff1a;以水平或垂直方向排列相对布局&#xff1a;通过相对定位排列帧布局&#xff1a;开辟空白区域&#xff0c;帧里的控件(层)叠加表格布局&#xff1a;表格形式排列绝对布局&#x…

禁用code server docker容器中的工作区信任提示

VSCode 添加受限模式&#xff0c;主要是防止自动运行代码的&#xff0c;比如在vscode配置的task和launch参数是可以运行自定义代码的。如果用VScode打开未知的工程文件就有可能直接运行恶意代码。 但是当我们的实验基础模板文件可控的情况下&#xff0c;要想禁用code server do…

【SpringCloud Alibaba】Nacos Config配置管理与Gateway 网关

目录 一、Config 远程配置 1.1 config 介绍 1.2 bootstrap.yml 配置文件 二、Gateway 网关 2.1 gateway 介绍 2.2 gateway 使用 2.2.1 方式一 2.2.2 方式二&#xff08;动态路由&#xff09; 一、Config 远程配置 1.1 config 介绍 微服务意味着要将单体应用中的业务拆分…

Python异步网络编程库之twisted 详解

概要 Python twisted 是一个强大的异步网络编程框架&#xff0c;它允许开发者轻松构建高性能的网络应用和协议。无论是构建网络服务器、客户端、聊天应用还是实时通信工具&#xff0c;twisted 都提供了丰富的工具和组件。本文将深入探讨 twisted 的基本概念、安装方法以及详细…

yolov5无人机视频检测与计数系统(创新点和代码)

标题&#xff1a;基于YOLOv5的无人机视频检测与计数系统 摘要&#xff1a; 无人机技术的快速发展和广泛应用给社会带来了巨大的便利&#xff0c;但也带来了一系列的安全隐患。为了实现对无人机的有效管理和监控&#xff0c;本文提出了一种基于YOLOv5的无人机视频检测与计数系…

软光栅透视校正插值写好了

我这文章写的六,自己不写什么过程,直接发张图片.我发一下我看的引用. 透视矫正插值 Perspective-Correct Interpolation 计算机图形学六&#xff1a;正确使用重心坐标插值(透视矫正插值(Perspective-Correct Interpolation))和图形渲染管线总结 一开始写错了,改了大概两天改…

STM32-创建工程模板

STM32 工程模板没有统一的格式&#xff0c;可以参考 ST 官方的示例模板或者根据自己的开发经验和使用习惯总结。 Project Template 文档以库函数工程模板为例&#xff0c;HAL 库工程模板对应参考即可。 Official Project Template ST 发布的标准外设库 (STM32 Standard Per…

OpenCV-20卷积操作

一、什么是图像卷积 图像卷积就是卷积在图像上按照滑动遍历像素时不断的相乘求和的过程。 绿色为图片&#xff0c; 黄色为卷积核&#xff0c; 粉色为最终得到的卷积特征。 二、步长 步长就是卷积核在图像上移动的步幅&#xff0c;每次移动一个方格则步幅为1。且一般为1。 若…

vue3中ref和reactive联系与区别以及如何选择

vue3中ref和reactive区别与联系 区别 1、ref既可定义基本数据类型&#xff0c;也可以定义引用数据类型&#xff0c;reactive只能定义应用数据类型 2、ref在js中取响应值需要使用 .value&#xff0c;而reactive则直接取用既可 3、ref定义的对象通过.value重新分配新对象时依旧…