复试 || 就业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 + 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.mfbz.cn/a/307937.html

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

相关文章

设计模式之外观模式【结构型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…

数组计算模块NumPy

NumPy是Python数组计算、矩阵运算和科学计算的核心库。 提供了高性能的数组对象提供了大量的函数和方法NumPy使用机器学习中的操作变得简单NumPy是通过C语言实现的 NumPy的安装 pip install numpy 数组的分类 一维数组 跟Python列表的形状一样&#xff0c;区别在于数组的…

MongoDB—SQL到MongoDB映射图表

一、术语和概念 下表显示了各种 SQL 术语和概念 以及相应的 MongoDB 术语和概念。 SQL Terms/Concepts MongoDB Terms/Concepts database database table collection row document or BSON document column field index index table joins $lookup, embedded docu…

RV1126边缘计算AI盒子,支持4-6路1080p视频,2T 算力

1 产品概述 信迈推出基于瑞芯微Rockchip RV1126架构的AI边缘计算主板&#xff0c;RV1126芯片是四核ARM Cortex-A7,1.5GHz&#xff0c; RSIC-V 200MHz CPU &#xff0c;NPU2.0Tops。AI边缘计算主板外围接口丰富&#xff0c;拥有超强扩展性&#xff0c;可广泛应用在智慧安防、工…

贝锐蒲公英云智慧组网解读:实现工业设备远程调试、异地PLC互联

这个时候&#xff0c;使用异地组网是非常有效的解决方案。在12月28日贝锐官方的直播中&#xff0c;请到了贝锐蒲公英的技术研发经理&#xff0c;为大家分享了贝锐蒲公英云智慧组网解决方案&#xff0c;以及蒲公英二层组网相关的技术和应用。 搜索“贝锐”官方视频号&#xff0c…

AI数据和测试评价

1数据收集和清洗 为了训练AI模型,需要收集和准备足够的数据。数据应该涵盖各种情况和场景,以确保系统在各种情况下都能准确地运行。数据原始来源应该是真实的,并且应该涵盖系统预计的使用情况。数据应该根据特定的需求进行采样和处理,可以来自各种来源,例如公共数据集、第…

Oracle数据库19c OCP 1z0-082考场真题解析第24题

考试科目&#xff1a;1Z0-082 考试题量&#xff1a;90 通过分数&#xff1a;60% 考试时间&#xff1a;150min 本文为云贝教育郭一军guoyJoe原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎和未经注明出处的转载。【云贝教育】Orac…

Matlab 之数据分布拟合

文章目录 Part.I IntroductionPart.II Distribution Fitter APP 的使用Chap.I APP 简介Chap.II 简单使用 Part.III 通过代码实现分布拟合Chap.I 基于 fitdist 函数Chap.II 获取数据的频率分布后进行曲线拟合 Reference Part.I Introduction 本文主要介绍了如何使用 Matlab 对数…

【Verilog】期末复习——分别画出下面两个程序综合后的电路图/reg型数据和wire型数据的区别

系列文章 数值&#xff08;整数&#xff0c;实数&#xff0c;字符串&#xff09;与数据类型&#xff08;wire、reg、mem、parameter&#xff09; 运算符 数据流建模 行为级建模 结构化建模 组合电路的设计和时序电路的设计 有限状态机的定义和分类 期末复习——数字逻辑电路分…

设计模式-空对象模式

设计模式专栏 模式介绍模式特点应用场景空对象模式和单例模式的区别代码示例Java实现空对象模式Python实现空对象模式 空对象模式在spring中的应用 模式介绍 空对象模式是一种设计模式&#xff0c;用于处理对象不存在的情况。它通过返回一个空对象来代替 null 值&#xff0c;从…

视频号小店发展趋势如何?适合新手吗?

我是电商珠珠 视频号团队在22年7月发展了自己的电商平台-视频号小店。截止到目前为止&#xff0c;也发展了不过一年的时间&#xff0c;所以各项平台政策还不太严谨。 一个新兴平台所做的第一步就是招揽更多的商家来入驻&#xff0c;就会将红利全部倾向商家&#xff0c;而在今…

6.1.2捕捉图像(3)

6&#xff0e;文字捕捉 除了可以捕捉图像外&#xff0c;HyperSnap6还有一个非常神奇、非常实用的功能——文字捕捉。利用文字捕捉&#xff0c;可以把一段不可复制的文字捕捉下来&#xff0c;以便于重新编辑。 (1)右单击桌面上的“我的电脑”&#xff0c;在弹出的快捷菜单中选…

Kubernetes(K8S)云服务器实操TKE

一、 Kubernetes(K8S)简介 Kubernetes源于希腊语,意为舵手,因为首尾字母中间正好有8个字母,简称为K8S。Kubernetes是当今最流行的开源容器管理平台,是 Google 发起并维护的基于 Docker 的开源容器集群管理系统。它是大名鼎鼎的Google Borg的开源版本。 K8s构建在 Docker …

世微 AP6608 DC-DC转换器 1.2MHz 2-24V 2A升压转换IC

FEATURES? Integrated 80mΩ Power MOSFET ? 2V to 24V Input Voltage ? 1.2MHz Fixed Switching Frequency ? Internal 4A Switch Current Limit ? Adjustable Output Voltage ? Internal Compensation ? Up to 28V Output Voltage ? Automatic Pulse Frequency Modul…

聚道云软件连接器助力某电商企业实现电商业务与财务系统的数据互通

客户介绍&#xff1a; 某电商企业是一家集电商平台、仓储物流、售后服务等业务于一体的综合性电商企业。公司业务遍布全国多个城市&#xff0c;拥有庞大的客户群和销售额。 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 客户痛点&#xff1a; 有赞商…

高通ais over hab高概率导致安卓系统起不来原因分析及解决方案

一&#xff09;ais概述 高通8155的摄像头驱动在hostOS qnx上&#xff0c;guestOS 安卓要使用摄像头&#xff0c;就需要就需要通过hab机制与qnx通信。 Ais框架如下 二&#xff09;ais的控制通道与数据通道 a)控制通道即&#xff0c;front end需要将start/stop摄像头的控制命令发…

arm64虚拟化技术与kvm实现原理分享

文章目录 1 简介2 arm64 虚拟化相关硬件支持2.1 arm64 cpu 虚拟化基本原理及硬件支持2.2 系统寄存器捕获和虚拟寄存器支持2.3 VHE 特性支持2.4 内存虚拟化支持2.5 IO 虚拟化支持2.6 DMA 虚拟化支持2.7 中断虚拟化支持2.8 定时器虚拟化支持 3 arm64 kvm 初始化流程3.1 初始化总体…

烟火检测/区域人流统计/AI智能分析网关V4如何配置通道?

TSINGSEE青犀智能分析网关&#xff08;V4版&#xff09;是一款高性能、低功耗的软硬一体AI边缘计算硬件设备&#xff0c;硬件内部署了近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、物、行为等实时检测分析&#xff0c;并上报识别结果&#xff0c;并能进行语音…

vue cli脚手架

1. vue cli 脚手架安装 参考官网&#xff1a;https://cli.vuejs.org/zh/guide/installation.html 步骤如下&#xff1a; 全局安装 npm install -g vue/cli # OR yarn global add vue/cli查看版本 vue --version # OR vue -V升级Vue cli &#xff08;需要升级的时候&#x…

nginx(1.13.7)首次安装出现:【make: *** 没有规则可以创建“default”需要的目标“build” 问题】解决措施

目录 前言&#xff1a; 一.龙蜥&#xff08;Anolis&#xff09;操作系统上安装GCC 1.安装gcc 2.检验安装 二.安装出现 make&#xff1a; *** 没有规则可以创建“default”需要的目标“build” 问题 1.解压安装nginx 2.安装出现问题展示 3.解决措施 4.重新编译进行安装 5…
最新文章