劍指offer 面試64題

2022-04-23 01:51:20 字數 941 閱讀 1110

題目:64題

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

解法一:利用python特性

1

#-*- coding:utf-8 -*-

2class

solution:

3def

sum_solution(self, n):4#

write code here

5return sum(list(range(1,n+1)))

解法二:利用兩個函式,乙個函式充當遞迴函式的角色,另乙個函式處理終止遞迴的情況,如果對n連續進行兩次反運算,那麼非零的n轉換為true,0轉換為false。利用這一特性終止遞迴。注意考慮測試用例為0的情況,參考自github

#

-*- coding:utf-8 -*-

class

solution:

defsum_solution(self, n):

#write code here

return

self.sum(n)

defsum0(self,n):

return

0

defsum(self,n):

func=

return n+func[not

not n](n-1)

解法三:終止遞迴採用邏輯與的短路特性,如下:

#

-*- coding:utf-8 -*-

class

solution:

defsum_solution(self, n):

#write code here

return n and n + self.sum_solution(n-1)

劍指offer 面試35題

面試35題 題目 複雜鍊錶的複製 題 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 解題思路一 python作弊法 解題 coding ...

劍指offer 面試33題

面試33題 題 二叉搜尋樹的後序遍歷序列 題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。解題思路 遞迴 解題 coding utf 8 class solution defverifysquenceof...

劍指offer 面試31題

面試31題 題目 棧的壓入 彈出元素 題 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出...