• 让人泪奔的方法:两个变量在不使用其他变量的情况下进行数据交换


    这是个很经典很多时候都会用到的问题,但是容易被忘记。在这里做个笔记:

    int a = 1;
    int b = 2;
    inline void Swap(int &a,int &b)

    {
        if(a!=b)
       
    {
          
      a=a^b;
       
         b=a^b;
     
         a=a^b;
      
      }

    }

    ^是异或XOR运算符;

    优化后:

    int &swap(int &a, int &b)
    {
        return (b ^= a ^= b ^= a);
    }

    这样就实现了交换

    方法一

    void swap(int *p, int *q)
    {
        *p = *p + *q;
        *q = *p - *q;
        *p = *p - *q;
    }

    方法二

    void swap(int *p, int *q)
    {
        *p = *p + *q - (*q = *p);
    }

  • 相关阅读:
    Tarjan-割点&桥&双连通
    树状数组
    loli的搜索测试-5
    思维题
    生成树
    贪心
    loli的搜索测试-4
    树链剖分
    基于AHK的上课自动签到
    用列表实现栈
  • 原文地址:https://www.cnblogs.com/shoneworn/p/3385987.html
Copyright © 2020-2023  润新知