算法 “in-place” 操作(转)

转自:https://blog.csdn.net/u011489043/article/details/70197020

在刷编程题的时候,可能大家也经常遇到题目要求do in-place

  in-place操作,意思是所有的操作都是”就地“操作,不允许进行移动,或者称作 原位操作,即不允许使用临时变量。

  举个例子,大家经常写也经常用到的"交换两个数的值":

// 设置初始值
int x = 1,y = 2;

1)最先想到的方法,就是设置中间变量

// 设置中间变量
int temp;
temp = x;
x = y;
y = temp;

2)然而要满足in-place的要求,就需要另辟蹊径了。比如通过加减运算实现(但是可能会出现溢出)

// 加减运算
x = x + y;
y = x - y;
x = x - y;

3)通过异或操作实现

// 异或运算
x = x ^ y;
y = x ^ y;
x = x ^ y;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值