<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          面試官:不借助第三變量交換兩個變量值的方案你有幾種?

          共 1904字,需瀏覽 4分鐘

           ·

          2021-02-02 21:36

          引言

          在我們學習編程之初,就學習過變量的賦值操作,同時也學習了將一個變量的值賦值給另外一個變量。對于交換兩個變量的值,很多童鞋都有解決方案。然鵝,對于面試官提出的不借助第三變量來交換兩個變量的值,你能想到幾種解決方案呢?

          如果你只知道一種方案,請你認真看下去... 如果你知道兩種方案,那么你可以來了解更多方案了...

          一、最簡單的實現(xiàn)-最初的記憶

          讓我們由淺入深,來了解交換變量值的最簡單、最初的解決方案:借助于第三個變量

          // 聲明變量a和b
          let a = 5
          let b = 4
          // 1. 臨時將變量a的值賦值給變量tmp
          let tmp = a
          // 2. 將變量b的值賦值給a
          a = b
          // 3. 將變量a的值(tmp的值)賦值給b
          b = tmp

          console.log(a) // 4
          console.log(b) // 5

          so east!

          二、不借助第三變量的實現(xiàn)-ES6版

          面試官在聽到上面給出的解決方案后,微微一笑(腦海中閃現(xiàn)到:你以為就這么簡單)說道,有其他解決方案嗎,不借助第三變量呢?

          了解學習了JS ES6的數(shù)組解構(gòu)賦值的童鞋對此冷冷一笑,嘴角一撇,冷酷酷地說道:也可以使用ES6的數(shù)組解構(gòu)賦值來交換變量的值。

          let a = 5;
          let b = 4; // 請注意此位置的分號;是一定要存在的呀

          // 數(shù)組結(jié)構(gòu)賦值,交換變量a,b的值
          [a, b] = [b, a]

          console.log(a) // 4
          console.log(b) // 5

          看到面試官的臉色似乎漸漸露出了滿意的神色,內(nèi)心是不是有點兒竊喜。如果此刻面試官又說道,還有沒有其他的解決方案,小朋友,你是不是有許多問號?

          三、不借助第三變量的實現(xiàn)-終極版本一:單純數(shù)學運算

          胡哥在這里再次強調(diào),這絕對不是一個考驗“智商”的答案,只是考驗了在編程的變通能力以及經(jīng)驗問題,下面請看代碼的實現(xiàn)。

          let a = 5
          let b = 4

          // 接下來就是見證神奇的時刻,來,鏡頭請對準我。

          // 二者之和
          a = a + b
          // 二者之和 - b的值,剩余a的值賦值給變量b
          b = a - b
          // 此刻a還是二者之和,a - b此刻相當于二者之和 - 變量b(a的值),那么此刻剩余的就是變量b的值,賦值給a變量
          a = a - b

          // yes, we did!
          console.log(a) // 4
          console.log(b) // 5

          如果此刻面試官再問出還有沒有其他的方案,此刻你會慌的一比呢,還是內(nèi)心大喊“wc”呢

          四、不借助第三變量的實現(xiàn)-終極版本二:位運算符^

          不要怕,兄弟們,接下來給大家來分享第四種方式,位運算符 ^ 異或。在變量的運算中這個操作符有什么作用呢?

          異或運算符:

          是執(zhí)行位運算的,二進制運算,參與變量運算的兩個變量要轉(zhuǎn)為二進制進行運算。
          如果相同二進制位的值相同,則轉(zhuǎn)為0,否則轉(zhuǎn)為1.

          那交換兩個變量的值具體代碼是如何實現(xiàn)的呢?請看大屏幕,哦,不,請往下看。

          let a = 5 // 0101
          let b = 4 // 0100

          // 按位異或運算
          a = a ^ b // 0101 ^ 0100 ===> 0001,此時a的值為1
          b = a ^ b // 0001 ^ 0100 ===> 0101,此時b的值為5
          a = a ^ b // 0001 ^ 0101 ===> 0100,此時a的值為4

          console.log(a) // 4
          console.log(b) // 5

          驚不驚喜,意不意外。。。


          以上四種實現(xiàn)交換兩個變量值得方案你都掌握了嗎,如果掌握了,可以對面試官反手就是一個“吊打”了。如果你有更多的解決交換兩個變量值的方案,歡迎留言交流呀!

          后記

          以上就是胡哥今天給大家分享的內(nèi)容,喜歡的小伙伴記得收藏轉(zhuǎn)發(fā)、點擊右下角按鈕在看,推薦給更多小伙伴呦,歡迎多多留言交流...

          回復?【關閉】
          回復?【實戰(zhàn)】獲取20套實戰(zhàn)源碼
          回復?【被刪】
          回復?【訪客】
          回復?【小程序】學獲取15套【入門+實戰(zhàn)+賺錢】小程序源碼
          回復?【python】學微獲取全套0基礎Python知識手冊
          回復?【2019】獲取2019 .NET 開發(fā)者峰會資料PPT
          回復?【加群】加入dotnet微信交流群

          說說 C# 9 新特性的實際運用


          微信8.0大更新,附最新內(nèi)測版下載地址!


          瀏覽 74
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  午夜偷拍福利视频 | 天天干天天色天天 | 台湾成人视频 | 五月天国产视频乱码免费 | 中文字幕无码在线观看视频 |