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

leetcode原题: 最小值、最大数字

题目1:最小值

给定两个整数数组ab,计算具有最小差绝对值的一对数值(每个数组中取一个值),并返回该对数值的差

示例:

输入:{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8}
输出:3,即数值对(11, 8)

 解题思路:

1.先对两个数组a和b进行升序排序

2.使用双指针,分别用来遍历两个数组

3.将两个指针所指的数值进行比较,将数值较小的向后移,不断缩小差值

4.直到循环结束,在这过程中,如果遇到两个数值相等,那么说明已经找到最小差值0了,不用继续找下去了。

Code:

class Solution {
public:int smallestDifference(vector<int>& a, vector<int>& b) {sort(a.begin(), a.end());sort(b.begin(), b.end());int pa = 0;  //a数组的下标int pb = 0;  //b数组的下标int na = a.size();  // a的长度int nb = b.size();  // b的长度long long minres = LLONG_MAX;  //保存最小差值while (pa < na && pb < nb) {// 更新最小差值minres = min(abs((long long)a[pa] - (long long)b[pb]), minres);// 数值较小的指针往后移,逐渐缩小差值if (a[pa] < b[pb]) {pa++;}else if (a[pa] > b[pb]) {pb++;}else {  // 若找到相等的两个数,直接返回最小差值0即可return 0;}}return (int)minres;}
};

题目2:最大数字

编写一个方法,找出两个数字ab中最大的那一个。不得使用if-else或其他比较运算符。

示例:

输入: a = 1, b = 2
输出: 2

解题思路:

因为题目要求不允许使用比较运算符以及if-else判断语句,所以我们不能直接进行比大小

数学公式上看,我们可以通过公式,计算出较大值:

Code:

class Solution {
public:int maximum(int a, int b) {//为了防止溢出,先将两个int类型的整数转成long longlong c=a;long d=b;int res=(int)((fabs(c-d)+c+d)/2);return res;}
};

 还有一种方式使用 移位+处理溢出

如果是负数,右移32位,结果为-1

 a < b:
 1 + (a - b) >> 31 == 0
 a > b:
 1 + (a - b) >> 31 == 1

Code:

class Solution {
public:int maximum(int a, int b) {long c = a, d = b;//注意这里是long,所以不是右移32位,而是64位int k = 1 + ((c - d) >> 63);return k * a + (!k) * b;}
};
http://www.lryc.cn/news/150654.html

相关文章:

  • Prompt2Model: Generating Deployable Models from Natural Language Instructions
  • 前端埋点 sendBeacon 替代方式
  • 面试官问我MySQL和MariaDB的联系和区别,这我能不知道?
  • 1.网络空间搜素引擎
  • 《安富莱嵌入式周报》第321期:开源12导联便携心电仪,PCB AI设计,150M示波器差分探头,谷歌全栈环境IDX,微软在Excel推出Python
  • 前端开发必备的网站
  • Java运行时jar时终端输出的中文日志是乱码
  • Vue框架--Vue中el和data的两种写法
  • 【数据结构】 二叉树面试题讲解->贰
  • C和SystemVerilog联合仿真
  • 15-mongodb
  • CSS学习笔记02
  • 为什么Java接口可以多继承,而类不可以?
  • 自动化信息收集工具 水泽 使用教程
  • 2023年全国职业院校技能大赛(高等职业教育组)“信息安全管理与评估”理论技能答案
  • MATLAB 动态图GIF
  • ChatGPT⼊门到精通(4):ChatGPT 为何⽜逼
  • 数据分析基础-数据可视化学习笔记03-可视化的符号与表示-图形符号学
  • 暴力递归转动态规划(四)
  • 大数据项目实战(Sqoop安装)
  • android——spinner下拉弹窗、popupwindow下拉弹窗列表
  • 【阿里淘天】淘天20230824真题一、二 <模拟、双指针>
  • Java注解和反射
  • 【Docker】01-Centos安装、简单使用
  • k8s之存储篇---数据卷Volume
  • 博流RISC-V芯片JTAG debug配置与运行
  • [国产MCU]-W801开发实例-UART控制器
  • OpenCV(九):LUT查找表
  • 2023年 Java 面试八股文(25w字)
  • STM32f103入门(7)pwm驱动led驱动舵机驱动直流电机