in-place

刷编程题的时候,经常遇到题目要求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;

随机推荐

  1. 关于response.write(alert(''))弹窗改变页面格式问题

    不建议使用 Response.Write("<script>alert('增加年级失败')</script>"); 而使用 Page.ClientScrip ...

  2. C 碎片十一 扫雷源码

    // C语言版本扫雷 #include <stdio.h> #include <stdlib.h> /* 1(0,0) 1(0,1) 0(0,2) 1(0,3) 1(0,4) ...

  3. 使用JAVA读写Properties属性文件

     使用JAVA读写Properties属性文件 Properties属性文件在JAVA应用程序中是经常可以看得见的,也是特别重要的一类文件.它用来配置应用程序的一些信息,不过这些信息一般都是比较少的数 ...

  4. iOS核心动画高级技巧之CALayer(一)

    iOS核心动画高级技巧之CALayer(一) iOS核心动画高级技巧之图层变换和专用图层(二)iOS核心动画高级技巧之核心动画(三)iOS核心动画高级技巧之性能(四)iOS核心动画高级技巧之动画总结( ...

  5. 画报表框架——Echarts.js

    官网:http://echarts.baidu.com/index.html ————————————————————————————————— 先看看我做的第一个柱状图形报表 ——————————— ...

  6. Shell脚本 - 用来检查memcache并自动重启生效脚本

    #!/bin/sh#check memcache process and restart if downmm_bin="/usr/local/bin/memcached"mm_lo ...

  7. linux 命令——11 nl (转)

    nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等 ...

  8. UVALive 3530 Martian Mining(贪心,dp)

    分析: 对于网格grid[i][j]如果放向上的管道,那么grid[i][k], k>j 就只能放向上的管道了. 那么定义dp[i][j]表示第i行,最后一个放向左的管道是j的最大总矿量. j ...

  9. Angular4中常用管道

    通常我们需要使用管道实现对数据的格式化,Angular4中的管道和之前有了一些变化,下面说一些常用的管道. 一.大小写转换管道 uppercase将字符串转换为大写 lowercase将字符串转换为小 ...

  10. JSON对象转成formData对象,formData对象转成JSON对象

    在向后端请求时,如果上传的数据里存在file文件对象,需要用到表单提交,这时候我们需要将JSON对象,转成formData对象,具体见代码 const formData = new FormData( ...