面試的時候愛問的兩道題

2021-04-18 22:21:08 字數 1083 閱讀 8945

好久不寫技術貼了,決定換一下思維,寫個演算法相關的。

最近面試的時候,很喜歡問兩個演算法問題。

問題1:阿拉伯數字的金額轉換為中國傳統的漢字形式。

問題2:不增加變數,交換兩個數值變數的值。

先說問題2,因為問題2最簡單。

很顯然,要想不增加變數,交換兩個變數的值,只可能做加減乘除運算。用對應的加減法或者乘除法都可以做到。舉例:a=5;b=8。

加減: a=a+b=5+8=13;b=a-b=13-8=5;a=a-b=13-5=8;

a=a-b=5-8=-3;b=a+b=-3+8=5;a=b-a=5-(-3)=8;

同理,乘除。

我覺得此題主要是考乙個人的思維。但是面試的人,大部分都不會做。

再說問題1:還是大部分人不會做。現提供本人思路如下:

分析問題:a、小數點之前為整數,小數點後只有兩位,為角分。

b、小數點之前個位單位為元,依次為元,十,百,千,萬,十萬,百萬,千萬,億……

c、每位的數字對應為:零、壹、貳、叄、肂、伍、陸、柒、捌、镹。

d、在操作中,數值運算和陣列操作效能最快。

思路:a、用兩個陣列,array1[10]、array2按下標為0、1、……的順序分別儲存零、壹、貳、叄、肂、伍、陸、柒、捌、镹。和元,十,百,千,萬,十萬,百萬,千萬,億……

b、針對整數部分,從十開始除,餘數轉換為漢字,取對應餘數值得陣列array1[餘數]所對應的值。取得到的商,並記錄除的次數。次數對應為array[次數]的漢字。拼接。

c、反覆第二步,直道商為0。

d、其中餘位為0時特殊處理。

e、小數點後統一處理兩次。不做講述。

舉例:234.12。整數為234。

234/10  商23 餘4  除次數為0  array1[4]+array2[0]=肆元

23/10    商2   餘3  除次數為1  array1[3]+array2[1]=叁拾

2/10      商0   餘2  除次數為2  array1[2]+array2[2]=貳佰

合起來就是貳佰叄拾肆元。

此題考的是拿到問題後的分析思路和基本功。可能每個人的實現方法不一樣。可能是緊張吧,面試的時候,大部分人都答不出來。

CVTE 面試的兩道演算法題

下了班立馬趕往深圳北站,下著大雨又坐過了站,著急地跑向對面的站牌,匆忙間搞得滿頭大汗。好不容易坐上了高鐵,休息片刻,終於有時間整理一下前兩天面試cvte 時遇到的兩道演算法題。1.在陣列中尋找和為固定值的兩個數字 這道題目是一面的時候乙個女面試給出的最後乙個面試問題。題目的大概意思如上,資料不一定有...

兩道面試演算法題

最近面試 兩道演算法題 說難不難 要寫全對也不容易 很慚愧 我沒有一次寫對 第一道 無序int陣列 找到中位數 void swap int a,int b int get kth number vector num,int k,int start,int end 一次劃分結束 index i if ...

C 面試常考的兩道題

1.說明一下const和readonly的區別 區別有兩點 1.const是乙個確定的值,不可以修改,適用於自然常量,如pi,如 系統引數配置 readonly可以在執行時修改,比如在建構函式裡可以修改。2.const修飾的是變數,readonly修飾的是字段。2.說說using的用法 1.最常見到...