經典面試題12 - 交換兩個變量

交換

問題:
在不使用中間變量的前提下,請問如何交換兩個變量的值?

解答:
這屬于經典的入門級面試題,其實答案有多種。

  • 第一類方法也是常用的方法,使用最簡單的加減法。
    <blockquote>
    public void swap(int a,int b){
    a=a+b;
    b=a-b;
    a=a-b;
    }
    </blockquote>

  • 第二類方法和第一種類似,但使用的是乘除法,其實乘除法只是加減法的變種。
    <blockquote>
    public void swap(int a,int b){
    a = a * b;
    b = a / b;
    a = a / b;
    }
    </blockquote>

  • 第三類方法使用異或實現(xiàn)交換,異或的原理就是如果2個數(shù)中對應的位上相同為0,相異為1,即任何數(shù)異或上其本身為0, 而任何數(shù)和 0 異或還是任何數(shù)。
    <blockquote>
    public void swap(int a,int b){
    a ^= b; //a=a^b
    b ^= a; //b=b(ab)=bab=bba=0^a=a
    a ^= b; //a=(ab)a=aba=aab=0^b=b
    }
    </blockquote>

推薦閱讀

經典面試100題 - 持續(xù)更新中

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容