面試題 交換兩個變數的值

2021-05-27 09:35:28 字數 1089 閱讀 2821

面試題:交換兩個變數

也許當你聽到這道題的時候會暗暗的發笑,這麼簡單的演算法題竟然拿出來作為面試題考,是不是也在懷疑這家公司的本身的能力與規模了呢。

交換兩個變數:例如num1=5,num2=6→num1=6,num=5

怎麼樣是不是覺得灰常簡單,你是不是用下面的方法做的:

int num1=5;

int num2=6;

int temp=num1;

num1=num2;

num2=temp;

console.writeline("num1=,num2=",num1,num2);

很對,大家從開始學程式設計就已經學到了中間變數的作用,好比是兩個瓶子,一瓶是可樂,一瓶是雪碧,要是想把兩個瓶子裡面的飲料交換一下,,那麼我們首先想到的就是借助於中間變數(再找來乙個空的瓶子)先把其中一瓶的飲料(雪碧或可樂)倒進空瓶,再把另一瓶的飲料(可樂或雪碧)倒進剛剛倒出飲料的瓶子,最後再把用來作為中間變數的瓶子裡的飲料給現在空著的瓶子,這樣就達到了交換兩瓶飲料的的目的。

這種做法再符合邏輯不過了。

接著我們來看下面的面試題:

不允許任何中間變數來交換兩個變數的值:例如num1=5,num2=6

怎麼樣,有沒有需要思考幾分鐘的意思?

在不借助任何中間變數的情況下交換變數的值,一貫繼承了好久的習慣一下子給禁用了,猛一看有沒有點無從下手的感覺,下面我們來看一下它的解決辦法:

int num1=5;

int num2=6;

num1+=num2;

num2=num1-num2;

num1=num1-num2;

console.writeline("num1=,num2=",num1,num2);

看完解決方案會不會覺得恍然大悟的感覺,也許你會覺得第二種方法簡直不合邏輯,簡直不門不派,但是真讓你遇到這樣的面試題,你能怎麼辦,再程式設計中遵循的最重要的乙個原則就是用最簡單的方法解決最複雜的問題,所以,雖然後一種方法沒有普及型,很欠規範,但是具體情況還是要具體分析的好。不要把面試題想象的有多麼的難,其實都是我們經常用到的,經常見到的演算法,就是換了一種形式,換了一種解決方法而已,所以在平常的學習中我們一定要把知識學活,把思路開啟。這樣我們才會真的駕馭所學來解決新的東西。

面試題 互換兩個變數的值

互換兩個任意值變數的值,如 int a 1 int b 2 方案一 用變數相加減的方法 面試中使用 a a b b a b a a b 方案二 用變數相加減賦值的方法 面試中使用 b a b a b 方案三 用異或的特點實現 面試中使用 a a b b a b a b b a a a b a b a...

面試題 兩個變數的最大值 最小值和變數交換

xk 例題 題目 不用if,switch等判斷語句,找出兩個給定變數中的最大值和最小值 解答 要注意直接a b可能導致溢位。下面的解答來自 程式設計師面試寶典 第二版,很明顯存在溢位問題。不過這種思路有點意思。int max a b abs a b 1 int min a b abs a b 1 這...

面試題 不使用任何中間變數交換兩個值的大小

不使用中間變數如何將a,b值交換 大家都知道,假如有a,b兩個整型數,我們可以用 a b b a a b 來交換a,b的值,總結一下我個人的理解 在 c 裡面是按位異或操作符,相同的話異或的結果就是 0,不同的話就是 1。牢記以下兩條原則 任何一位二進位制數同 1 異或都會變成另外乙個 0 同 1 ...