【面试题 16.01】交换数字 (异或) 原创

题目

题目链接
编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。
示例:

输入: numbers = [1,2] 输出: [2,1] 

提示:

numbers.length == 2

解题思路 1

创建数组开辟了一点点点的内存难道不可以忽略不计吗

【面试题 16.01】交换数字 (异或)            原创

代码

class Solution {     public int[] swapNumbers(int[] numbers) {         return new int[]{numbers[1],numbers[0]};     } } 

解题思路 2

利用异或操作

  • a ^ b ^ b = a
  • a ^ b ^ a = b
  • a ^ a = 0
  • 0 ^ a = a
  • 异或满足交换律 结合律
    【面试题 16.01】交换数字 (异或)            原创

代码

class Solution {     public int[] swapNumbers(int[] numbers) {         numbers[0] = numbers[0] ^ numbers[1];         numbers[1] ^= numbers[0];         numbers[0] ^= numbers[1];         return numbers;     } } 

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 【面试题 16.01】交换数字 (异或) 原创

提供最优质的资源集合

立即查看 了解详情