演算法練習題 兩數相除

2022-05-17 01:19:29 字數 873 閱讀 5407

題目描述:

給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算子。

返回被除數 dividend 除以除數 divisor 得到的商。

被除數和除數均為 32位有符號整數。

除數不為 0。

假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231,  231 − 1]。本題中,如果除法結果溢位,則返回 231 − 1。

暴力破解法:(超出時間限制)

const

( int_max = 2147483647int_min = -2147483648)

func divide(dividend int,divisor int) int

if (dividend > 0 && divisor < 0)

if (dividend < 0 && divisor < 0)

for ; ; result ++

dividend = dividend -divisor

}if (dividend == 0 && flag == 1)

else

if (dividend == 0 && flag == 0)

else

if (dividend != 0 && flag == 1)

else

if result >int_max

return

result

}

大部分的演算法都是一次一次經過改良後實現的,想要一步登天,一次就寫出完美的演算法。那你就要在私底下經過千萬次的錘煉。

練習題4 兩數之和

原題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2...

演算法練習題

題目描述 給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前...

兩串旋轉練習題

如果對於乙個字串a,將a的前面任意一部分挪到後邊去形成的字串稱為a的旋轉詞。比如a 12345 a的旋轉詞有 12345 23451 34512 45123 和 51234 對於兩個字串a和b,請判斷a和b是否互為旋轉詞。給定兩個字串a和b及他們的長度lena,lenb,請返回乙個bool值,代表他...