尊享面试100题

题目624:数组列表的最大距离(NO)

  • 解题思路:记录每个数组的最大最小值,循环判断最大距离。

给定 m 个数组,每个数组都已经按照升序排好序了。

现在你需要从两个不同的数组中选择两个整数(每个数组选一个)并且计算它们的距离。两个整数 a 和 b 之间的距离定义为它们差的绝对值 |a-b| 。

返回最大距离。

class Solution {
public:int maxDistance(vector<vector<int>>& arrays) {//这题的做题思路其实就是遍历每个数组,记录数组的最大最小值//先记录第一组的最大最小值//.back()是获取最后一个值int max_value=arrays[0].back();int min_value=arrays[0][0];int max_Distance=0;//从第二个数组开始遍历//这里可以是可以进入for循环的,因为题目限制了//这里有个限制,最大最小值不能再同一个数组中for(int i=1;i<arrays.size();i++){//当前数组的最大最小值int current_min=arrays[i][0];int current_max=arrays[i].back();max_Distance=max(max_Distance,abs(current_max-min_value));max_Distance=max(max_Distance,abs(current_min-max_value));//更新最大最小值max_value=max(current_max,max_value);min_value=min(current_min,min_value);}return max_Distance;}
};

题目280:摆动排序(YES)

  • 解题思路:这里有规律,排序后再指定位置插入。

给你一个的整数数组 nums, 将该数组重新排序后使 nums[0] <= nums[1] >= nums[2] <= nums[3]…

输入数组总是有一个有效的答案。

class Solution {
public:void wiggleSort(vector<int>& nums) {//我发现了其中的规律,他是排序后按位置插入的sort(nums.begin(),nums.end());vector<int>ans=nums;int size=ans.size();int count=0;for(int i=0;i<size;i++){if(i%2==0){//偶数的不用变nums[i]=ans[count];}else{//奇数要变nums[i]=ans[size-(count+1)];count++;}}}
};

题目1056:易混淆数(NO)

  • 解题思路:按照题目的思路,讲所有的数反转再进行比较。

给定一个数字 N,当它满足以下条件的时候返回 true:

原数字旋转 180° 以后可以得到新的数字。

如 0, 1, 6, 8, 9 旋转 180° 以后,得到了新的数字 0, 1, 9, 8, 6 。

2, 3, 4, 5, 7 旋转 180° 后,得到的不是数字。

易混淆数 (confusing number) 在旋转180°以后,可以得到和原来不同的数,且新数字的每一位都是有效的。

class Solution {
public:bool confusingNumber(int n) {//这题的解题思路是按照题目的意思走,比较旋转反转后是否相同//用哈希表来表示旋转后的数unordered_map<char,char>map={{'0','0'},{'1','1'},{'9','6'},{'8','8'},{'6','9'}};string ret=to_string(n);string ans="";//最终结果for(char c:ret){if(map.find(c)==map.end()){//存在不能反转的返回falsereturn false;}ans=map[c]+ans;//反转的数放在最前面}return ans!=ret;}};

题目1427:字符串的左右移(YES)

  • 解题思路:根据题目的思路,模拟出来就行。

给定一个包含小写英文字母的字符串 s 以及一个矩阵 shift,其中 shift[i] = [direction, amount]:

direction 可以为 0 (表示左移)或 1 (表示右移)。
amount 表示 s 左右移的位数。
左移 1 位表示移除 s 的第一个字符,并将该字符插入到 s 的结尾。
类似地,右移 1 位表示移除 s 的最后一个字符,并将该字符插入到 s 的开头。
对这个字符串进行所有操作后,返回最终结果。

class Solution {
public:string stringShift(string s, vector<vector<int>>& shift) {//这种最常规的方法就是根据题目的思路进行移动for(int i=0;i<shift.size();i++){for(int j=0;j<shift[i][1];j++){//移动的位数if(shift[i][0]==0){//左移char c=s[0];//从0位置开始删除1个s.erase(0,1);s=s+c;}else{//右移char c=s[s.size()-1];s.erase(s.size()-1,1);s=c+s;}}}return s;}
};

题目161:相隔为1的编辑距离(NO)

  • 解题思路:这题也是要迎合这题目的思路,首先就是要将情况分清楚,大于1的必然不行,后面就是对长度差等于0和等于1的情况进行单独的处理就行。方法其实是相似的。

给定两个字符串 s 和 t ,如果它们的编辑距离为 1 ,则返回 true ,否则返回 false 。

字符串 s 和字符串 t 之间满足编辑距离等于 1 有三种可能的情形:

往 s 中插入 恰好一个 字符得到 t
从 s 中删除 恰好一个 字符得到 t
在 s 中用 一个不同的字符 替换 恰好一个 字符得到 t

class Solution {
public:bool isOneEditDistance(string s, string t) {//这题的难点在于你要将情况分析清楚//1.长度差大于1的必然是不行的//2.长度差等于1或者为0这是两种可能可以编辑的情况//这里全局默认s<tint len_s=s.size();int len_t=t.size();if(abs(len_s-len_t)>1){return false;}//这里筛选下来的都是有可能的,先切换if(len_s>len_t){swap(s,t);swap(len_s,len_t);}if(len_s==len_t){//相等的情况bool check=false;for(int i=0;i<len_s;i++){if(s[i]!=t[i]){if(check){//再次出现不相等就是错误的return false;}//出现一个不相等check=true;}}return check;}else{//差值为1的情况//其实和上面的非常相似,就是要找到一个不相等的int i=0;int j=0;for(;i<len_s&&j<len_t;){if(s[i]==t[j]){//都相等的情况i++;j++;}else{//头一次找到不相等的if(i==j){//第一次不相等是允许的j++;}else{return false;}}}return true;}}
};

题目186:反转字符串中的单词(NO)

  • 解题思路:先反转整体,再反转单个单词。

给你一个字符数组 s ,反转其中 单词 的顺序。

单词 的定义为:单词是一个由非空格字符组成的序列。s 中的单词将会由单个空格分隔。

必须设计并实现 原地 解法来解决此问题,即不分配额外的空间。

class Solution {
public:void reverseWords(vector<char>& s) {  // 1. 反转整个字符数组  reverseRange(s, 0, s.size() - 1);  // 2. 逐个反转每个单词  int start = 0;  while (start < s.size()) {  int end = start;  // 找到单词的结束位置  while (end < s.size() && s[end] != ' ') {  end++;  }  // 反转当前单词  reverseRange(s, start, end - 1);  // 移动到下一个单词  start = end + 1;  }  }  private:  void reverseRange(vector<char>& s, int start, int end) {  while (start < end) {  swap(s[start], s[end]);  start++;  end--;  }  } 
};

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

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

相关文章

详细介绍MES系统的生产监控模块

MES系统的监控模块是系统的重要组成部分&#xff0c;它负责实时监控生产过程中的各项关键指标和数据&#xff0c;以确保生产活动的顺利进行和高效管理。以下是MES系统监控模块的详细介绍&#xff1a; 一、MES系统监控模块的主要功能 实时数据采集&#xff1a; 监控模块通过传…

解决uniapp开发的app,手机预览,上下滑动页面,页面出现拉伸,抖动的效果问题,

在pages.json文件里“globalStyle”下面的"app-plus"里加入"bounce": "none"即可 "app-plus": { "bounce": "none", //关闭窗口回弹效果 }

MFC -文件类控件

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天给大家讲解MFC中的文件类 MFC文件类 在MFC中&#xff0c;CFILE 是基本的文件操作类&#xff0c;提供了读取、写入、打开、关闭等操作方法主要成员函数:Open(用于打开文件&#xff0c;设置模式 例如 只读 只写 读…

(done) 声音信号处理基础知识(1)

来源&#xff1a;https://www.youtube.com/watch?viCwMQJnKk2c 声学处理应用场景如下 这个系列的内容包括如下&#xff1a; 作者的 slack 频道 油管主的 github repo: https://github.com/musikalkemist/AudioSignalProcessingForML

滑动条QSlider

可以在一个范围内拖动。 常用属性和方法 值 包括当前值、最大值、最小值 // 获取和设置当前值 int value() const; void setValue(int);// 获取和设置最大值 int maximum() const; void setMaximum(int);// 获取和设置最小值 int minimum() const; void setMinimum(int);//…

【深度学习】聊一聊正则化

在机器学习中&#xff0c;正则化是一种常用的技术&#xff0c;用于控制模型的复杂度&#xff0c;减少过拟合的风险。它通过在损失函数中引入额外的项来对模型的参数进行约束或惩罚&#xff0c;使模型更加简单、平滑或稀疏。我们在实际应用中&#xff0c;经常使用的是L1和L2正则…

内网渗透之中间人欺骗攻击-ARP攻击

ARP攻击 ARP协议简介 ARP全称为Address Resolution Protocol&#xff0c;即地址解析协议&#xff0c;它是一个根据IP地址获取物理地址的TCP/IP协议&#xff0c;主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机&#xff0c;并接收返回消息&#xff0c;以此确定…

李宏毅2023机器学习作业HW07解析和代码分享

ML2023Spring - HW7 相关信息&#xff1a; 课程主页 课程视频 Kaggle link 回来了 : ) Sample code HW07 视频 HW07 PDF 个人完整代码分享: GitHub | Gitee | GitCode P.S. HW7 的代码都很易懂&#xff0c;可以和 2024 年的新课&#xff1a;生成式AI导论做一个很好的衔接&#…

高性能string库-stringzilla

这段时间在优化服务耗时问题&#xff0c;其中perf打出来的热点显示&#xff0c;有一部分热点集中在string find. 由于之前看到sonic-cpp在使用simd加速string的一些操作&#xff0c;所以当时我想使用AVX2实现一版strstr来加速这个过程。但是在实现过程中&#xff0c;碰到一些问…

【速成Redis】03 Redis 五大高级数据结构介绍及其常用命令 | 消息队列、地理空间、HyperLogLog、BitMap、BitField

前言&#xff1a; 上篇博客我们讲到redis五大基本数据类型&#xff08;也是就下图的第一列&#xff09;。 【速成Redis】02 Redis 五大基本数据类型常用命令-CSDN博客文章浏览阅读1k次&#xff0c;点赞24次&#xff0c;收藏10次。该篇适用于速成redis。本篇我们将讲解&#…

Innodb存储架构

Innodb整体存储架构 Innodb是一款兼顾性能及可靠性的存储引擎&#xff0c;主要分为内存存储结构和磁盘存储结构&#xff0c;二者分别扮演着提高性能和数据持久化的工作 内存结构中定义了缓冲池、变更缓冲区、日志缓冲区、自适应哈希四个缓冲区&#xff0c;它们均是为提升查询…

linux网络-----传输层

前言 一.传输层&#xff1a; 数据要交接应用层先通过传输层&#xff08;给哪个程序发数据&#xff09; 传输层作用&#xff1a;负责数据能够从发送端传输接收端。对于应用层来说有许多服务&#xff0c;传输层怎么知道把数据发给那个应用服务&#xff1f; 这时就有了端口号&am…

kubernetes中的认证授权

目录 一、kubernetes API访问控制 1、UserAccount与ServiceAccount &#xff08;1&#xff09;ServiceAccount &#xff08;2&#xff09;示例 二、认证&#xff08;在k8s中建立认证用户&#xff09; 1、创建UserAccount 2、RBAC&#xff08;Role Based Access Control&…

Redis——redispluspls库——通用命令以及String类型相关接口使用

文章目录 通用命令get&#xff0c;setkeys插入迭代器 expire和ttltype string 类型接口set和getset NX和XXmset 和 mgetgetrange 和 setrangeincr 和 decr 通用命令 get&#xff0c;set void get_set_test(sw::redis::Redis& redis){//bool set(const sw::redis::StringV…

Iterative Regularized Policy Optimization with Imperfect Demonstrations

ICML 2024 paper code Intro 利用基于次优专家数据的专家策略&#xff0c;通过policy constraint的形式引导智能体的在线优化&#xff0c;同时通过利用在线高质量数据扩展专家数据&#xff0c;并有监督得对专家策略进行矫正。二者交替优化实现目标策略的迭代更新 Method 上述…

51单片机-红外遥控器(NEC标准)-实验(红外遥控及调速电机)

作者&#xff1a;Whappy 时间&#xff1a;2024.9.20 总结一下&#xff01;基础实验到这儿里就圆满结束&#xff0c;历经25天&#xff0c;将51单片机学完并亲自手敲代码近5000行&#xff0c;在手敲代码过程中&#xff0c;明显感觉的看和敲&#xff0c;明显就是不同的感觉&…

STM32 通过 SPI 驱动 W25Q128

目录 一、STM32 SPI 框图1、通讯引脚2、时钟控制3、数据控制逻辑4、整体控制逻辑5、主模式收发流程及事件说明如下&#xff1a; 二、程序编写1、SPI 初始化2、W25Q128 驱动代码2.1 读写厂商 ID 和设备 ID2.2 读数据2.3 写使能/写禁止2.4 读/写状态寄存器2.5 擦除扇区2.6 擦除整…

基于SpringBoot的在线点餐系统【附源码】

​基于SpringBoot的高校社团管理系统&#xff08;源码L文说明文档&#xff09; 4 系统设计 4.1 系统概述 网上点餐系统的结构图4-1所示&#xff1a; 图4-1 系统结构 模块包括主界面&#xff0c;首页、个人中心、用户管理、美食店管理、美食分类管理、美食…

前端开发者必学:mo.js动画库

前端开发者必学&#xff1a;mo.js动画库 前言 在当今的网页设计中&#xff0c;动态效果和交互性是提升用户体验的关键因素。 mo.js&#xff0c;一个轻量级的 JavaScript 动画库&#xff0c;为前端开发者提供了一种简单而强大的方法来创建引人注目的动画效果。 本文将向您介…

Nature|PathChat:病理学多模态生成性AI助手的创新与应用|顶刊精析·24-09-21

小罗碎碎念 今日顶刊&#xff1a;Nature 这篇文章今年6月就发表了&#xff0c;当时我分析的时候&#xff0c;还是预印本&#xff0c;没有排版。今天第一篇推文介绍的是Faisal Mahmood &#xff0c;所以又把这篇文章拉出来详细分析一下。 作者角色作者姓名单位名称单位英文名称第…