【刷题之路】不使用额外空间交换两个数

原创 2016年06月01日 21:03:12

比如,a,b,利用位运算异或的性质,1、相同的两个数异或结果为0,2、任何数与0异或都等于其本身

利用a=a^b, b=a^b, a=a^b;即可以成功交换两个数

class Swap {
public:
    vector<int> getSwap(vector<int> num) {
        // write code here
        num[0]=num[0]^num[1];
        num[1]=num[0]^num[1];
        num[0]=num[0]^num[1];
        return num;
    }
};

版权声明:本文为博主原创文章,未经博主允许不得转载。

面试题:不用第三变量交换ab值

常规的就是加减法,这里给出另外一种方法,就是异或法! #include using namespace std; ...
  • ztz0223
  • ztz0223
  • 2007年12月18日 10:49
  • 7753

不用额外变量交换两个整数的值

不用额外变量交换两个整数的值 【题目】   如何不用任何额外变量交换两个整数的值? 【解答】   使用位运算的异或运算,或者使用加法运算   a异或b的结果是c,那么c就是a整数位信息和b整数位信息的...
  • u010456903
  • u010456903
  • 2015年10月04日 23:01
  • 1085

不借助第三个变量交换两个整数

假设两个数x和y,则有: 方法1,算术运算(加减): x=x+y;  //x暂存两数之和 y=x-y;  //y为两数之和减去y,即原来的x x=x-y;  //x为两数之和减...
  • samjustin1
  • samjustin1
  • 2016年08月06日 21:40
  • 1377

算法实现两个数交换(多种方法)

算法实现两个数交换(多种方法)
  • u012965373
  • u012965373
  • 2016年01月16日 21:10
  • 2150

异或运算实现两个数的交换

通常的交换两个变量a,b的过程为 int temp; temp=a a=b; b=temp; 需借助上面的第3个临时变量temp. 采用下面的方...
  • heathyhuhu
  • heathyhuhu
  • 2013年10月15日 08:32
  • 13080

Java中两个数交换的细节问题

在码代码过程中,两个数交换是经常用到的,但在Java 中,如果忽略了值传递和引用传递就很容易出错。 看一下两个整数交换代码: public void swap(int a,int b){ int t=...
  • Mars_NAVY
  • Mars_NAVY
  • 2014年04月21日 09:29
  • 3473

C语言中如何用指针交换两个数的大小

如何用传址的方式交换两个数的大小 首先先看第一个程序,用函数的调用来解决看似正确实则运行出来的结果是错误的 #define _CRT_SECURE_NO_WARNINGS 1 #include #in...
  • persistence_s
  • persistence_s
  • 2016年10月01日 11:04
  • 1519

C++交换两个数总结

习题:实现两个整数的交换。方法1:设置中间变量#include using namespace std; int main() { int a,b,c; coutb; c = ...
  • JIEJINQUANIL
  • JIEJINQUANIL
  • 2016年03月26日 00:26
  • 3752

位运算和关于两个数交换的多种方法

用位运算来交换两个数的值,值得学习
  • u013412497
  • u013412497
  • 2015年03月20日 01:28
  • 4038

面试题36:不使用额外空间将A、B两链表元素交叉归并

#include "stdafx.h" #include using namespace std; //定义结点类型 struct Node { int m_value;//结点...
  • htyurencaotang
  • htyurencaotang
  • 2013年09月04日 20:49
  • 3154
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【刷题之路】不使用额外空间交换两个数
举报原因:
原因补充:

(最多只允许输入30个字)