【刷题之路】不使用比较返回两个数中较大的值

原创 2016年06月01日 21:11:13

不使用比较只能判断两个数的差的正负,使用位运算,判断符号位即可

注意若两数一正一负,可能出现相减后溢出的情况,注意判断即可

class Compare {
public:
    int getMax(int a, int b) {
        // write code here
        if(isnegitive(a) && ispositive(b)) return b;
        if(isnegitive(b) && ispositive(a)) return a;
        int c=a-b;
        if(isnegitive(c)) return b;
        else return a;
        
    }
    bool isnegitive(int num){
        return num & (1 << (sizeof(num)*8 - 1));
    }
    bool ispositive(int num){
        return !(num & (1 << (sizeof(num)*8 - 1)));
    }
};

版权声明:本文为博主原创文章,未经博主允许不得转载。

不用”if“,”?:“,”switch“或其他判断语句,求两个数中较大的数或较小的数

以下五种方法分别求出较大的数和较小的数的方法。较小数的代码在注释中,但未运行测试。 int Find1(int a, int b) { return ((a + b) + abs(a - b)) ...
  • u013074465
  • u013074465
  • 2015年01月13日 21:25
  • 5344

程序员面试金典——解题总结: 9.17中等难题 17.4编写一个方法,找出两个数字中最大的那一个。不得使用if-else或其他比较运算符。

#include #include using namespace std; /* 问题:编写一个方法,找出两个数字中最大的那一个。不得使用if-else或其他比较运算符。 分析:这个好像就是...
  • qingyuanluofeng
  • qingyuanluofeng
  • 2017年01月16日 14:40
  • 318

[C++]不用if比较两个数大小

2010-09-25 18:31:13|  分类: [C++] |  标签:c++  不用if  比较大小  |举报|字号 订阅 一、说明 前两天笔试的时候居然出现...
  • shixiaoguo90
  • shixiaoguo90
  • 2014年04月29日 17:00
  • 889

不用+号实现两个数相加

/* 不用+号实现两个数的相加 思路: 先用10进数表示 449 +598 第一步,两数相加,但不进位得 937 第二步,两数相加,只进位, 0110 第三步,前...
  • zheng0518
  • zheng0518
  • 2013年05月19日 22:44
  • 1519

位运算之不使用任何比较判断比较两个数大小问题

【题目】 对于两个32位整数a和b,请设计一个算法返回a和b中较大的。但是不能用任何比较判断。若两数相同,返回任意一个。 给定两个整数a和b,请返回较大的数。 测试样例: 1,2 返回:2 ...
  • FreeeLinux
  • FreeeLinux
  • 2016年12月19日 18:00
  • 1663

比较两个数大小汇编解析

比较两个数大小汇编解析 更新了求连个书数的最大值和最小值的3中方法.
  • jiangyinglin198812
  • jiangyinglin198812
  • 2014年08月18日 10:13
  • 2747

不用任何比较判断找出两个数中较大的数

不用任何比较判断找出两个数中较大的数 【题目】   给定两个32位整数a和b,返回a和b中较大的。 【要求】   不用任何比较判断。 【解答】   这里有两种方法进行解决,两种方法原理都一...
  • u010456903
  • u010456903
  • 2015年10月07日 21:00
  • 1489

c语言中不需要中间变量就能实现两个数交换的几种算法

第一类方法也是常用的方法,通过多次的数值计算来完成交换,到现在知道的有下面三种: (1)加减法。 a = a + b; b = a - b; a = a - b; 该方法可以交换整型和浮点型...
  • Mormont
  • Mormont
  • 2016年12月17日 22:07
  • 1834

【算法C++】检测数组里是否有两个数之和等于某个数

问题: 检测数组里是否有两个数之和等于某个数解决方法一:先将数组排序,然后从两头开始遍历 数组排序后,从左端开始取最小值,从右端取最大值, 判断两者之和与目标的大小: 1. 等于时,输出两个数...
  • zgljl2012
  • zgljl2012
  • 2015年09月27日 20:17
  • 2318

【算法题】数组中找到两个数,使其和等于某个数

From : http://leetcode.com/onlinejudge Two Sum Given an array of integers, find two numbers such...
  • lewsn2008
  • lewsn2008
  • 2013年04月08日 21:02
  • 3016
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【刷题之路】不使用比较返回两个数中较大的值
举报原因:
原因补充:

(最多只允许输入30个字)