力扣:面试题16.01.交换数字

题目及测试样例:

题目链接:面试题 16.01. 交换数字 - 力扣(LeetCode)https://leetcode.cn/problems/swap-numbers-lcci/description/

★划重点:

如果不设置临时变量,可以采用异或运算的性质:两个数a和b:a^a=0,0^a=a来计算本题

思路:将需要交换的两个值a与b先做好原始数据的标记①与②【不需要写进代码里面,但是自己得心里得清楚,否则会绕进死胡同里面导致算错】,之后进行一系列异或运算,每一步计算都将式子化简为包含①和②的表达式,再进行约分,就可以实现交换a与b了

提交代码:

cpp 复制代码
class Solution {
public:
    vector<int> swapNumbers(vector<int>& a) {
        //如果不设置临时变量,可以采用异或运算的性质:两个数a和b:a^a=0,0^a=a来计算本题
        //【a[0]值为①】
        //【a[1]值为②】//当且仅当a[0]=a[1]时①=②,本题就是要交换①和②的值:将【a[0]值为②】,【a[1]值为①】
        a[0]=a[0]^a[1];//此时的a[0]值为③,这个③和上面的①含义不同
        a[1]=a[1]^a[0];//将式子拆成最初的①和②来计算:【a[1]=a[1]^a[0]=a[1]^a[0]^a[1]=0^a[0]=a[0]   此时的【a[1]=a[0],这个地方的a[0]说的是①,将①的值赋值给a[1];】
        a[0]=a[0]^a[1];//将式子拆成最初的①和②来计算:【a[0]=a[0]^a[1]=a[0]^a[1]^a[0]=0^a[1]=a[1]   此时的【a[0]=a[1],这个地方的a[1]说的是②,将②的值赋值给a[0];  】
        return a;
    }
};
相关推荐
kyriewen2 小时前
我把今年流传的前端 AI 面试题整理了一遍——4 类场景题+回答框架(附速查表)
前端·面试·程序员
程与留4 小时前
15_国际化和本地化:tr()、ts 文件、QM 文件、多语言切换
c++·qt
AEI4 小时前
四年间大模型的演进历程
人工智能·面试·程序员
地平线开发者5 小时前
【模型轻量化专题】衡量模型轻量性的指标
算法
程与留5 小时前
14_Qt 样式表(QSS)入门(语法、选择器、美化实战)
c++·qt
学习星球8 小时前
OFDM技术精讲:正交性推导、循环前缀原理与80行Python链路仿真(附实测数据)
算法·面试·前端框架
YIAN12 小时前
Docker + Nginx 核心原理扫盲:从环境隔离到反向代理,运维面试必考点
后端·docker·面试
欧特克_Glodon14 小时前
OpenCV计算机视觉开发入门与实践<二十七>:图像分割概述
c++·人工智能·opencv·计算机视觉
蒸蒸yyyyzwd14 小时前
cpp 选手秋招学习笔记 day21
c++·面试·八股
alphaTao14 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode