劍指Offer64數字 求1 2 n

2021-10-10 11:01:51 字數 528 閱讀 9860

題目:

求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(a?b:c)。

示例 1:

輸入: n = 3

輸出: 6

示例 2:

輸入: n = 9

輸出: 45

限制:1 <= n <= 10000

分析:這裡考慮遞迴思路,中點解決遞迴終止條件,即出口在**?

思路:1、 遞迴 + 短路與邏輯運算;短路與運算 && 左邊為true才會執行右邊,所以構成條件判斷,破除題目限制;

2、將乘除運算轉化為運算;附上,暫時不建議;

**實現:

思路1 時間複雜度o(n),空間複雜度o(n)

class

solution

}

思路2 時間複雜度o(logn),空間複雜度o(1)

class

solution

}

劍指筆記 64 求1 2 n

題目 求1 2 3 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 思路1 將求和公式進行變形為sum n 2 n 2,然後利用指數和移位操作來計算,如下 1 public class solution 思路2 1.利用短路特性和...

劍指offer 學習筆記 求1 2 n

面試題64 求1 2 n。不能用乘除法 for while if else switch case等關鍵字及條件判斷語句 包括a?b c 法一 建構函式求解。迴圈讓相同的 迴圈執行n次,我們也可以不用迴圈語句完成,先定義乙個型別,接著建立n個該型別的物件,那麼這個型別的建構函式就會被呼叫n次 inc...

劍指offer刷題 求1 2 n

題目 求1 2 n,要求不能使用乘除法,for while if else switch case等關鍵字及條件判斷語句 a?b c 要求不能使用乘除和一些語句,因此我們可以設計遞迴思路,並且用位運算子來判斷是否到達遞迴終止的條件。另外,我們可以用c 建構函式來設計出一種思路,具體見 class s...