面试题——a、b交换与比较
来源:互联网 发布:日本烘焙大师 知乎 编辑:程序博客网 时间:2024/06/05 19:36
面试题1:
有两个变量a和b,不用“if”,"?"、"switch"或其他判断语句,找出两个数中间比较大的
方案一:
int max = ((a+b)+abs(a-b))/2
注:abs()--求绝对值
方案二:
int c = a-b;
char * strs[2] = {"a large","b large"};
c = unsigned(c)>>(sizeof(int)*8-1);
面试题2:给三个整数a、b、c, 函数实现取三个数的中间数,不可以用sort ,整数操作尽可能少
代码如下:
inline int max(int a, int b) { return a>=b?a:b;}
inline int min(int a, int b) { return a<=b?a:b;}
inline int medium (int a,int b,int c)
{
int t1 =max(a,b);
int t2 = max(b,c);
int t3 = max(a, c);
return min (t1,min(t2,t3));
}
面试题3:如何将a、b的值进行交换,并且不使用任何中间变量?
解析:简而言之,用异或语句比较容易,不用担心越界问题
如果采用:
a=a+b;
b=a-b;
a=a-b;
这样做的缺点就是如果a、b都是比较大的两个数,a=a+b就会越界
而采用:
a=a^b;
b=a^b;
a=a^b;
无需担心越界问题,这样就比较好
这样做的原理是按位异或运算。按位异或运算“^”是双目运算符。其功能是参与运算的两个数个对应的二进制位相异或,当对应的二进制位相异时取1;
参与运算数仍以补码形式出现,
0 0
- 面试题——a、b交换与比较
- 面试题2—交换a和b
- a,b交换与比较
- C++面试题之a和b交换面试题
- a和b交换面试题(用异或解决)
- 程序员面试宝典(第四版) —— 运算符问题 | a、b 交换与比较
- 【每日面试题】通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小
- python面试题,通过交换a,b中的元素,使[序列a和]与[序列b和]之间的差最小
- a与b值交换
- a,b比较和交换问题
- a,b比较和交换问题
- 面试题:b = ++a + (++a);
- Maria840js面试题:不使用中间变量,交换int型的 a, b两个变量的值
- 剑指offer代码解析——面试题11求a的b次方
- 两个关于a,b的面试题
- 面试题isSubstr(a,b)试做
- 【计算机网络常见面试题】电路交换、报文交换和分组交换的比较
- 常见面试题——不用临时变量交换数据
- 怎样理解示波器的波形捕获率,捕获周期
- [Linux]时间相关命令
- 解惑】考研:考还是不考?
- ClustLib——A C++ Data Clustering Framework(一):数据集相关类设计
- 【GZOJ】1314——异或最大值
- 面试题——a、b交换与比较
- HDU 4937 Lucky Number
- 南大软院大神养成计划--第三天网页布局
- 南大软院大神养成计划--day03
- 搭建hadoop前期的Linux环境的配置
- Python List+Tuple+Dict+Set小结
- mysql-5.6.27-winx64安装
- 第一个android 程序的学习心得
- 循环链表