1. 题目

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

示例:
输入: numbers = [1,2]
输出: [2,1]提示:
numbers.length == 2

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/swap-numbers-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 首先异或运算跟次序无关
  • a^a = 0, 0^a=a
  • a ^= b ^= a ^= b
  • 从右往左一个个的看
  • 第一个,a = a^b,b = b
  • 第二个,b = b^(a^b)=a,a=a^b
  • 第三个,a = (a^b)^a = b
  • 可以看到最后a,b的值互换了
class Solution {public:vector<int> swapNumbers(vector<int>& n) {n[0] ^= n[1] ^= n[0] ^= n[1];return n;}
};

程序员面试金典 - 面试题 16.01. 交换数字(位运算swap)相关推荐

  1. 程序员面试金典 - 面试题 05.01. 插入(位运算)

    1. 题目 插入.给定两个32位的整数 N 与 M,以及表示比特位置的 i 与 j. 编写一种方法,将 M 插入 N,使得 M 从 N 的第 j 位开始,到第 i 位结束. 假定从 j 位到 i 位足 ...

  2. 程序员面试金典 - 面试题 16.21. 交换和(哈希set)

    1. 题目 给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等. 返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素. 若有多 ...

  3. [Leetcode][程序员面试金典][面试题16.11][JAVA][跳水板][数学][动态规划]

    [问题描述][简单] [解答思路] 边界问题 k=0 ,不能产生跳水板,返回空数组 shorter 等于longer,只有一种跳水板,返回longerk 思路 一般情况,k块木板,k种可能 跳水板的长 ...

  4. 程序员面试金典 - 面试题 16.09. 运算(只用+法做乘除)

    1. 题目 请实现整数数字的乘法.减法和除法运算,运算结果均为整数数字, 程序中只允许使用加法运算符和逻辑运算符,允许程序中出现正负常数,不允许使用位运算. 你的实现应该支持如下操作: Operati ...

  5. java兰顿蚂蚁解题思路_程序员面试金典 - 面试题 16.22. 兰顿蚂蚁(deque模拟)

    1. 题目 一只蚂蚁坐在由白色和黑色方格构成的无限网格上. 开始时,网格全白,蚂蚁面向右侧. 每行走一步,蚂蚁执行以下操作. (1) 如果在白色方格上,则翻转方格的颜色,向右(顺时针)转 90 度,并 ...

  6. 程序员面试金典 - 面试题 16.22. 兰顿蚂蚁(deque模拟)

    1. 题目 一只蚂蚁坐在由白色和黑色方格构成的无限网格上. 开始时,网格全白,蚂蚁面向右侧. 每行走一步,蚂蚁执行以下操作. (1) 如果在白色方格上,则翻转方格的颜色,向右(顺时针)转 90 度,并 ...

  7. 程序员面试金典 - 面试题 16.16. 部分排序(排序/不排序)

    文章目录 1. 题目 2. 解题 2.1 排序 2.2 不排序 1. 题目 给定一个整数数组,编写一个函数,找出索引 m 和 n ,只要将索引区间 [m,n] 的元素排好序,整个数组就是有序的. 注意 ...

  8. 程序员面试金典 - 面试题 16.18. 模式匹配(逻辑题)

    1. 题目 你有两个字符串,即pattern和value. pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式. 例如,字符串"ca ...

  9. 程序员面试金典 - 面试题 16.14. 最佳直线(哈希map+set)

    1. 题目 给定一个二维平面及平面上的 N 个点列表Points,其中第i个点的坐标为Points[i]=[Xi,Yi]. 请找出一条直线,其通过的点的数目最多. 设穿过最多点的直线所穿过的全部点编号 ...

最新文章

  1. js php base64,JavaScript实现Base64编码与解码的代码详解
  2. 使用DDMS抓取安卓APP的奔溃日志
  3. BV-Person: A Large-scale Dataset for Bird-view Person Re-identification
  4. Arduino--Mlx90614红外温度传感器(额温枪芯片)
  5. ati显卡驱动安装linux,恭喜自己 ati显卡驱动安装成功
  6. 【转】C++/CLI简介(什么是C++/CLI) -------C++/CLI 编程系列一
  7. 从Eclipse切换到IDEA后需要做的事情
  8. 边缘检测算法_机器视觉怎样检测产品边缘
  9. 简书和微博的区别是什么
  10. E+H流量计5P3B15-BBDBAAAFADEA1S1AA1+AK
  11. matlab瓶盖盖严检查,口服液瓶盖密封性的质量检测方法你知道吗?
  12. Python爬取 201865 条《隐秘的角落》弹幕,发现看剧不如爬山?
  13. 7-2 求交错序列前N项和 (10 分)
  14. 中学教师资格证——综合素质备考心得+建议
  15. 计算机图形学基础如何学,计算机图形学基础思考
  16. Cadence PCB仿真 使用 Allegro PCB SI 电源和地网络的PDN分析功能介绍图文教程
  17. 用超级计算机打游戏是什么样的体验,用超级计算机来玩游戏 GTX Titan显卡评测...
  18. win business_使用Business iQ进行实时业务监控
  19. Qt编写项目作品26-一维码二维码解析及生成
  20. 【KingstVIS】逻辑分析仪连不上竟然是因为电源

热门文章

  1. 编写linux驱动程序步骤
  2. 5G毫米波通信中一些量化的概念
  3. mogndb 慢查询
  4. Redis 3.0.2集群搭建以及相关问题汇总
  5. jq-实战之表格筛选
  6. SQL Server 2008R2数据库文件导入到SQL Server 2008数据库中
  7. GARFIELD@01-19-2005
  8. Android中的5种数据存储方式
  9. 解析一个C语言俄罗斯方块游戏,包你看了就会
  10. 我在深圳,但是家里托人在老家找了一份工作