LeetCode 面试题 16.01. 交换数字

题目描述

面试题 16.01. 交换数字

思路分析

解法一:异或交换(推荐)

核心思路

  • 利用异或性质 a ^= b; b ^= a; a ^= b; 实现交换。
  • 不需要额外变量。


复杂度分析

  • 时间复杂度:O(1)。
  • 空间复杂度:O(1)。
class Solution {
    public int[] swapNumbers(int[] numbers) {
        numbers[0] ^= numbers[1];
        numbers[1] ^= numbers[0];
        numbers[0] ^= numbers[1];
        return numbers;
    }
}
func swapNumbers(numbers []int) []int {
	numbers[0] ^= numbers[1]
	numbers[1] ^= numbers[0]
	numbers[0] ^= numbers[1]
	return numbers
}

相似题目

题目 难度 考察点
136. 只出现一次的数字 简单 异或
260. 只出现一次的数字 III 中等 异或
190. 颠倒二进制位 简单 位运算
461. 汉明距离 简单 位运算
191. 位1的个数 简单 位运算
本文作者:
本文链接: https://hgnulb.github.io/blog/2025/27940327
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!