題目描述:
給定兩個整數,被除數 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值,代表他...