当前位置: 首页 > news >正文

LeetCode 面试题 16.01. 交换数字

文章目录

  • 一、题目
  • 二、C# 题解

一、题目

  编写一个函数,不用临时变量,直接交换 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} 11=010=101=100=0

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

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

  因此,对于整数 a 进行异或运算,有如下性质:
a ⊕ a = 0 a ⊕ 0 = a \begin{array}{c} a\oplus a = 0\\ a\oplus 0 = a\\ \end{array} aa=0a0=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=abb=ab=abb=a0=aa′′=ab=aa=aba=aab=0b=b

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

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# 的用户

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

http://www.lryc.cn/news/208418.html

相关文章:

  • 手机apn介绍
  • 垃圾回收系统小程序
  • 【随机过程】布朗运动
  • 基于机器视觉的车道线检测 计算机竞赛
  • C语言文件读写,文件相关操作
  • 竞赛选题 深度学习卷积神经网络的花卉识别
  • CMake教程 - basic point
  • day52--动态规划11
  • Jenkins入门级安装部署
  • tcpdump 异常错误
  • 如何绘制【逻辑回归】中threshold参数的学习曲线
  • 4.1 数据库安全性概述
  • tftp服务的搭建
  • c语言简介
  • OpenLayers.js 入门教程:打造互动地图的入门指南
  • 黑马头条:app端文章查看
  • 常见使用总结篇(一)
  • 【软考系统架构设计师】2023年系统架构师冲刺模拟习题之《数据库系统》
  • 北邮22级信通院数电:Verilog-FPGA(7)第七周实验(1):带使能端的38译码器全加器(关注我的uu们加群咯~)
  • SIT3491ISO具有隔离功能,256 节点,全双工 RS422/RS485 芯片
  • 在windows服务器上部署一个单机项目以及前后端分离项目
  • 使用jdbc技术,在数据库中存储大数据对象(使用字节IO流读取图片等给blob等二进制类型数据赋值)
  • 统计学习方法 支持向量机(下)
  • 【python】如何注释
  • C++——C++入门(二)
  • 容联七陌百度营销通BCP解决方案,让营销更精准
  • Transformer模型 | 用于目标检测的视觉Transformers训练策略
  • 贪心区间类题目
  • npm改变npm缓存路径和改变环境变量
  • string到QString出现中文乱码