LeetCode 面试题 16.01. 交换数字

文章目录

一、题目

  编写一个函数,不用临时变量,直接交换 numbers = [a, b]ab 的值。

示例:

输入: numbers = 1,2

输出: 2,1

提示:

  • numbers.length == 2
  • -2147483647 <= numbers[i] <= 2147483647

  点击此处跳转题目

二、C# 题解

  恰逢前两天看到过位运算的方法,这里刚好用上了哈哈。使用异或操作可以交换两个 int 型变量的值而无需临时变量,异或满足交换律与结合律,具体运算如下:

1 ⊕ 1 = 0 1 ⊕ 0 = 1 0 ⊕ 1 = 1 0 ⊕ 0 = 0 \begin{array}{c} &1\oplus1=0\\ &1\oplus0=1\\ &0\oplus1=1\\ &0\oplus0=0\\ \end{array} 1⊕1=01⊕0=10⊕1=10⊕0=0

  可以发现,两个相同的数异或结果均为 0:
1 ⊕ 1 = 0 0 ⊕ 0 = 0 \begin{array}{c} &1\oplus1=0\\ &0\oplus0=0\\ \end{array} 1⊕1=00⊕0=0

  1/0和0异或结果均不变:
1 ⊕ 0 = 1 0 ⊕ 0 = 0 \begin{array}{c} &1\oplus0=1\\ &0\oplus0=0\\ \end{array} 1⊕0=10⊕0=0

  因此,对于整数 a 进行异或运算,有如下性质:
a ⊕ a = 0 a ⊕ 0 = a \begin{array}{c} a\oplus a = 0\\ a\oplus 0 = a\\ \end{array} a⊕a=0a⊕0=a

  给定两个整数 a 和 b,进行如下操作:

a ′ = a ⊕ b b ′ = a ′ ⊕ b = a ⊕ b ⊕ b = a ⊕ 0 = a a ′ ′ = a ′ ⊕ b ′ = a ′ ⊕ a = a ⊕ b ⊕ a = a ⊕ a ⊕ b = 0 ⊕ b = b \begin{aligned} &a'=a\oplus b\\ &b'=a'\oplus b=a\oplus b\oplus b=a\oplus 0=a\\ &a''=a'\oplus b'=a'\oplus a=a\oplus b\oplus a=a\oplus a\oplus b=0\oplus b = b \end{aligned} a′=a⊕bb′=a′⊕b=a⊕b⊕b=a⊕0=aa′′=a′⊕b′=a′⊕a=a⊕b⊕a=a⊕a⊕b=0⊕b=b

  因此,给出代码如下(很整齐的代码hh):

csharp 复制代码
public 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;
    }
}
  • 时间:112 ms,击败 100.00% 使用 C# 的用户
  • 内存:40.30 MB,击败 100.00% 使用 C# 的用户

  当然,实际使用时不建议这样写,因为可读性太差。这里只是为了做题~

相关推荐
天疆说7 分钟前
庞特里亚金极小值原理的详细推导
算法
余俊晖20 分钟前
Self-OPD:去掉教师机的流匹配模型 On-Policy 蒸馏
人工智能·算法·机器学习
手写码匠22 分钟前
华为云Flexus+DeepSeek征文|华为云MaaS DeepSeek推理服务 × Flexus云服务器 × Dify一键部署:性能评测实战
人工智能·深度学习·算法·aigc
啥都想学点的研究生1 小时前
一篇文章讲清楚:逻辑回归
算法·机器学习·逻辑回归
货拉拉技术2 小时前
Agent 场景下 Token 成本优化的实战技巧
算法
呆呆敲代码的小Y2 小时前
【游戏开发】Lua 与 C# 交互原理解析
c#·lua·交互·热更新·lua与c#交互·游戏热更新
hahaha60162 小时前
HLS高层次综合设计技巧--循环merge和循环split
人工智能·算法·计算机视觉
JAI科研2 小时前
Deepseek Agent Harness教程(七) | Deepseek Harness不是一个内核加一堆插件
开发语言·人工智能·深度学习·算法·自然语言处理·transformer·vllm
集思广益的灰太狼3 小时前
变频器启动致PLC数据异常?西门子G120配合滤波器EMC抑制方案
人工智能·算法·工控·emc·电磁兼容·变频器·西门子
用户298698530143 小时前
PDF 转纯文本(TXT)免费攻略:轻松提取文字内容
人工智能·后端·c#