当前位置: 首页 > news >正文

复试 || 就业day05(2023.12.31)算法篇

文章目录

  • 前言
  • 找不同
  • 最长回文串
  • 找到所有数组中消失的数字
  • 下一个更大元素 I
  • 键盘行

前言

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

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

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

找不同


题目链接:找不同

C++版AC代码:

哈希

class Solution {
public:char findTheDifference(string s, string t) {unordered_map<char, int> m;for (int i = 0; i < s.size(); i ++ ) m[s[i]] ++;for (int i = 0; i < t.size(); i ++ ) m[t[i]] --;char res;for (auto i = m.begin(); i != m.end(); i ++ )if (i -> second == -1){res = i -> first;break;}return res;}
};

C++版AC代码:

题解中一种有趣的解法:累加 t 串的 ASCII,累加 s 串的 ASCII,相减即为多出的字符的 ASCII

class Solution {
public:char findTheDifference(string s, string t) {int ascii = 0;for (int i = 0; i < t.size(); i ++ ) ascii += t[i] - 'a';for (int i = 0; i < s.size(); i ++ ) ascii -= s[i] - 'a';return 'a' + ascii;}
};

最长回文串


题目链接:最长回文串

C++版AC代码:

class Solution {
public:int longestPalindrome(string s) {unordered_map<char, int> m;for (int i = 0; i < s.size(); i ++ ) m[s[i]] ++;int res = 0, odd = 0;for (auto i = m.begin(); i != m.end(); i ++ ){int k = i -> second;if (!(k % 2)) res += k;else{res += k - 1;odd = 1;}}return res + odd;}
};

找到所有数组中消失的数字


题目链接:找到所有数组中消失的数字

C++版AC代码:

class Solution {
public:vector<int> findDisappearedNumbers(vector<int>& nums) {vector<int> res;unordered_map<int, int> m;for (int k : nums) m[k] = 1;for (int i = 1; i <= nums.size(); i ++ ) if (!m.count(i)) res.push_back(i);return res;}
};

下一个更大元素 I


题目链接:下一个更大元素 I

C++版AC代码:

单调栈+哈希表,单调栈适用于:求下一个更大的元素;维护一个从栈顶到栈底单调递增的栈,栈顶元素(若存在的话)即为当前元素右边的比他大的第一个元素,因此在构建单调栈的时候需要逆序遍历 nums2,在当前元素 >= st.top() 的时候,需要弹出栈顶的元素直至栈空或栈顶元素大于当前元素。

class Solution {
public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {unordered_map<int, int> m;stack<int> st;for (int i = nums2.size() - 1; i >= 0; -- i){while (!st.empty() && nums2[i] >= st.top()) st.pop();m[nums2[i]] = st.empty() ? -1 : st.top();st.push(nums2[i]);}vector<int> res(nums1.size());for (int i = 0; i < nums1.size(); i ++ ) res[i] = m[nums1[i]];return res;}
};

键盘行


题目链接:键盘行

C++版AC代码:

💩💩💩屎山代码,自己看的都难受,不太想写了,赶紧打个卡而已,祝大家新年快乐!

class Solution {
public:vector<string> findWords(vector<string>& words) {vector<string> res;string s0 = "qwertyuiop", s1 = "asdfghjkl", s2 = "zxcvbnm";for (auto word : words){string tmp = word;for (int i = 0; i < word.size(); i ++ ) {if (word[i] >= 'A' && word[i] <= 'Z') word[i] += 32;           // 根据ASCII大写变小写}bool flag = true;int key;if (s0.find(word[0]) != -1) key = 0;else if (s1.find(word[0]) != -1) key = 1;else key = 2;for (int i = 1; i < word.size(); i ++ ){if (key == 0){                           // 第一行if (s0.find(word[i]) == -1){  flag = false;break;}}else if (key == 1){                      // 第二行if (s1.find(word[i]) == -1){flag = false;break;}}else {                                    // 第三行if (s2.find(word[i]) == -1){flag = false;break;}}}if (flag) res.push_back(tmp);}return res;}
};

相关文章:

  • SpringCloud(H版alibaba)框架开发教程,使用eureka,zookeeper,consul,nacos做注册中心——附源码(1)
  • IntelliJ IDEA [插件 MybatisX] mapper和xml间跳转
  • 【Spring Security】AuthenticationFailureHandler 用户认证失败后处理
  • 数据特征工程 | PSO粒子群算法的特征选择原理及python代码实现
  • web component - 使用HTML Templates和Shadow DOM构建现代UI组件
  • [BUG]Datax写入数据到psql报不能序列化特殊字符
  • C# MVC +Layui侧边导航栏的收缩及展开
  • VUE——IDEA 启动前端工程VS文件启动前端工程
  • 【操作系统】虚拟存储器
  • 相比于其他流处理技术,Flink的优点在哪?
  • N 皇后 II[困难]
  • 你好!Apache Seata
  • Android--Jetpack--Paging详解
  • C#-CSC编译环境搭建
  • 千巡翼X4轻型无人机 赋能智慧矿山
  • php的引用
  • @angular/forms 源码解析之双向绑定
  • [deviceone开发]-do_Webview的基本示例
  • ➹使用webpack配置多页面应用(MPA)
  • chrome扩展demo1-小时钟
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • MD5加密原理解析及OC版原理实现
  • Node项目之评分系统(二)- 数据库设计
  • OSS Web直传 (文件图片)
  • Vue UI框架库开发介绍
  • 从0实现一个tiny react(三)生命周期
  • 多线程 start 和 run 方法到底有什么区别?
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 浏览器缓存机制分析
  • 每天10道Java面试题,跟我走,offer有!
  • 面试遇到的一些题
  • 《码出高效》学习笔记与书中错误记录
  • ionic异常记录
  • linux 淘宝开源监控工具tsar
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • #100天计划# 2013年9月29日
  • #14vue3生成表单并跳转到外部地址的方式
  • (+4)2.2UML建模图
  • (4)事件处理——(7)简单事件(Simple events)
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (安卓)跳转应用市场APP详情页的方式
  • (独孤九剑)--文件系统
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (简单) HDU 2612 Find a way,BFS。
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (五)网络优化与超参数选择--九五小庞
  • (原)本想说脏话,奈何已放下
  • (转)创业家杂志:UCWEB天使第一步
  • .htaccess 强制https 单独排除某个目录
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 常见的偏门问题
  • .NET 中 GetProcess 相关方法的性能