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

LeetCode 面试题 16.07. 最大数值

文章目录

  • 一、题目
  • 二、C# 题解

一、题目

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

示例:

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

  点击此处跳转题目。

二、C# 题解

  找出最大的数,本质还是选择,只不过加入了算术运算。具体思想是:判断 a - b > 0?

  但是不用 > 号,而是取 a - b 的最高位 sgn,如果是 0 则 a > b,否则 a < b

  最后结果输出为 (1 - sgn) * a + sgn * b,sgn 为 0 则输出 a,是 1 则输出 b。

  具体代码实现有一些差异,因为取最高符号位时,如果是 a - b < 0,右移得到的最终结果为 -1(带符号位),因此最后的表达式需要做一些小改动。同时为了避免算数溢出,使用 long 正兴存储中间计算变量。

public class Solution {public int Maximum(int a, int b) {long diff = (long)a - (long)b;int  sgn  = (int)(diff >> 63);return (1 + sgn) * a - sgn * b;}
}
  • 时间:16 ms,击败 100.00% 使用 C# 的用户
  • 内存:25.28 MB,击败 100.00% 使用 C# 的用户
http://www.lryc.cn/news/209201.html

相关文章:

  • PS 安装教程 2022版(全网最详细图文教程)
  • [Python] OSError: [E050] Can‘t find model ‘en_core_web_sm‘.
  • 集合总结(Java)
  • 【ONE·Linux || 网络基础(一)】
  • Day12力扣打卡
  • SQL注入原理及思路(mysql)
  • vue核心面试题汇总【查缺补漏】
  • 使用WebStorm创建和配置TypeScript项目
  • vue源码分析(四)——vue 挂载($mount)的详细过程
  • 真机环境配置教程
  • 新电脑第一次重启后蓝屏
  • k8s statefulSet 学习笔记
  • gitlab 通过变量连接自建K8S
  • LuatOS-SOC接口文档(air780E)--mcu - 封装mcu一些特殊操作
  • 第14期 | GPTSecurity周报
  • 【数据结构】优先级队列
  • c语言宏相关高级用法
  • 新款模块上线实现SIP模块与扩拨电话之间打点与喊话功能 IP矿用电话模块SV-2800VP
  • 前端开发---在vue项目中使用openLayers
  • C语言之结构体和共用体详解
  • iOS插件
  • Maven第四章:配置文件详解
  • 计算机网络基础一
  • 搜维尔科技:Touch触觉式力反馈设备与Touch X力反馈设备对比分析
  • SAP保持系统长时间在线
  • 威联通NAS进阶玩法之使用Docker搭建个人博客教程
  • 模型对象CSS2DObject始终在画布的左上角(问题解决)
  • LabVIEW开发基于图像处理的车牌检测系统
  • Data Analysis With Python
  • 【Selenium】提高测试爬虫效率:Selenium与多线程的完美结合