本文主要是介绍【LeetCode程序员面试金典】面试题 16.01. Swap Numbers LCCI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Write a function to swap a number in place (that is, without temporary vari ables).
Example:
Input: numbers = [1,2]
Output: [2,1]
Note:
numbers.length == 2
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/swap-numbers-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
不使用中间变量
想到的经典解法就是异或
a=a^b;
b=a^b;(a^b^b=a)
a=a^b;((a^b)^(a^b^b))= ((a^b)^a)=b;
class Solution {public int[] swapNumbers(int[] numbers) {numbers[0] = numbers[0] ^ numbers[1];numbers[1] = numbers[0] ^ numbers[1];numbers[0] = numbers[0] ^ numbers[1];return numbers; }
}
另一种解法
a=a+b;
b=a-b;
a=a-b;
这里a+b可能溢出
其他解法
-
数组反转 numbers.reverse(); 原理还是中间变量
-
es6新特性 [a,b]=[b,a]//js的语法不是java
- return{number[1],number[0]};//取巧
奇葩的优先级问题
public int[] swapNumbers(int[] numbers) {numbers[0] = numbers[1] + (numbers[1] = numbers[0]) * 0;return numbers;
}作者:inevitability
链接:https://leetcode-cn.com/problems/swap-numbers-lcci/solution/javazhong-li-yong-liao-yun-suan-fu-you-xian-ji-zhi/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
这篇关于【LeetCode程序员面试金典】面试题 16.01. Swap Numbers LCCI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!