zoukankan      html  css  js  c++  java
  • 算法题汇总

    1. 交换两个整型变量值,要求不定义新变量作为临时变量


    • 算法一

    算法实现

    template <class T>
    void g_SwapInteger(T &a, T &b)
    {
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
    }

    算法证明

    a0 = a                 b0 = b
    a1 = a0 ^ b0 = a ^ b         b1 = b0 = b
    a2 = a1 = a ^ b          b2 = a1 ^ b1 = a ^ b ^ b = a
    a3 = a2 ^ b2 = a ^ b ^ a = b   b3 = b2 =a

    • 算法二

    ▶ 算法实现

    template <class T>
    void g_SwapInteger(T &a, T &b)
    {
        a = a - b;
        b = a + b;
        a = b - a;
    }

    ▶ 算法证明

    a0 = a,              b0 = b
    a1 = a0 - b0 = a - b,        b1 = b0 = b
    a2 = a1 = a - b,          b2 = a1 + b1 = a - b + b = a
    a3 = b2 - a2 = a - (a - b) = b,   b3 = b2 = a

  • 相关阅读:
    HTTP协议相关知识点
    收集—— css实现垂直居中
    Nginx、lls、Apache三种服务器的日志格式及其字段含义
    XXE
    不安全的url跳转问题
    SSRF
    暴力破解
    跨站脚本xss
    CSRF跨站请求伪造
    RCE
  • 原文地址:https://www.cnblogs.com/heartchord/p/algorithm.html
Copyright © 2011-2022 走看看