前两天去看见一个面试题目,洳下:
最容易想好的方法就是使用中间变量
但题目要求不使用中间变量于是就不知道怎么弄了。问百度发现还有几种方法,具体直接通过程序显示如下:
方法一:加减(会造成溢出)
方法二:乘除(会造成溢出)
说明:使用加减操作的时候当两个数的和超出范围时,僦会异常乘除操作时,就更容易溢出且除数不能为0.
异或则是根据的数据的编码得推到的。
PS:主要说的是拿到两个数的交换问题,首先想到的是利用中间变量实现。
而题目规定不能采用中间变量看看其他的几种方式,可能异或想不到但是加减应该是可以考虑到的。
之所以拿到题目不值所云,主要就是缺少一个思考问题的习惯现在的工作主要针对一些规范的API调用,致使大脑很多时候就按照规范嘚模式在运转缺乏独立思考创造的能力。
鉴于此个人应该花一些时间在算法题目上。