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

原创 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;
    }
};

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

相关文章推荐

不用额外空间,交换两个数

方法一:算术 x = x + y; y = x - y; x = x - y;  方法二:异或 x = x^y;// 只能对int,char.. y = x^y; ...

MYSQL查询优化:Limit

Limit语法: SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT子句可以被用于强制 SELE...

数据结构-----前序遍历二叉树非递归算法(利用堆栈实现)

一、非递归前序算法遍历思想:        (1)

【数据结构】对一个数组按给定的下标排序,仅使用两两交换的方式,要求不能对数组进行扩容尽可能使用额外少的空间

题目描述:     对一个数组按给定的下标排序,仅使用两两交换的方式,要求不能对数组进行扩容尽可能使用额外少的空间。 例如:原数组为:A,B,C,D,E,现给定新的位置为:3,0,1,4,2,...

对一个数组按给定的下标排序,仅使用两两交换的方式,要求不能对数组进行扩容尽可能使用额外少的空间。原数组为:A,B,C,D,E, 现给定新的位置为3, 0, 1, 4, 2那么排序为D,A,B,E,C

题目描述: 对一个数组按给定的下标排序,仅使用两两交换的方式,要求不能对数组进行扩容尽可能使用额外少的空间。 例如:原数组为:A, B, C, D, E, 现给定新的位置为:3, 0, 1, 4, 2...

字符串翻转的两种方法(1:利用额外空间 2:交换)

#include using namespace std; #define STRLENTH 100 char *str_reverse1(char *str) { char temp[STRLE...

Linux如何扩展XFS文件系统以完全使用额外空间

磁盘上有额外的空间,所以想要扩展其上创建的现存的XFS文件系统,下面以图文的形式为大家分享一下Linux如何扩展XFS文件系统,感兴趣的朋友可以尝试操作下 Linux如何...

25. Reverse Nodes in k-Group 怎样不使用额外空间翻转一个单向链表?

Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. ...

一个int 数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。

题目:一个int 数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。 分析: 由于是要求数组种所有符合要...
  • w618713
  • w618713
  • 2012年06月07日 13:40
  • 1523

华为-删数-约瑟夫环问题-不利用额外空间

题目:有一个数组a[N]顺序存放0-N,要求没隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1-...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【刷题之路】不使用额外空间交换两个数
举报原因:
原因补充:

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