劍指offer之Python練習二

2021-08-09 07:42:37 字數 3723 閱讀 2557

1.輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。

class solution:

def getleastnumbers_solution(self, tinput, k):

# write code here

if len(tinput)例如:,連續子向量的最大和為8(從第0個開始,到第3個為止)。

class solution:

def findgreatestsumofsubarray(self, array):

# write code here

s=0maxl=

for i in array:

s+=i

if s > 0:

else:

s=0if not maxl:

return -1

return max(maxl)

3.

求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。acmer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數。

class solution:

def numberof1between1andn_solution(self, n):

# write code here

count=0

m=1while m<=n:

count+=(n // m + 8) // 10 * m + (n // m % 10 == 1) * (n % m + 1)

m*=10

return count

4.統計乙個數字在排序陣列中出現的次數。

class solution:

def getnumberofk(self, data, k):

# write code here

return data.count(k)

class solution:

def getnumberofk(self, data, k):

# write code here

l = len(data)

c = 0

for j in range(l):

if data[j] == k:

s += 1

return s

5.乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。

class solution:

# 返回[a,b] 其中ab是出現一次的兩個數字

# write code here

tmp=

for i in array:

if i not in tmp:

else:

tmp.remove(i)

return tmp

6.

他在想究竟有多少種連續的正數序列的和為100(至少包括兩個數)。沒多久,他就得到另一組連續正數和為100的序列:18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和為s的連續正數序列?

class solution:

def findcontinuoussequence(self, tsum):

# write code here

tmp=

t=[i for i in range(tsum)]

for i in range(1,tsum/2+1):

for j in range(i+1,tsum):

if sum(t[i:j+1]) == tsum:

return tmp

7.

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。

class solution:

def findnumberswithsum(self, array, tsum):

# write code here

tmp=

for i in array:

if tsum-i in array:

if tmp:

return tmp[0]

else:

return tmp

8.

組合語言中有一種移位指令叫做迴圈左移(rol),現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於乙個給定的字串行s,請你把其迴圈左移k位後的序列輸出。例如,字串行s=」abcxyzdef」,要求輸出迴圈左移3位後的結果,即「xyzdefabc」。是不是很簡單?ok,搞定它!

class solution:

def leftrotatestring(self, s, n):

# write code here

c=0if n>len(s):

return ''

while cfish每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,「student. a am i」。後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是「i am a student.」。cat對一一的翻轉這些單詞順序可不在行,你能幫助他麼?

class solution:

def reversesentence(self, s):

# write code here

s1=s.split(' ')

s1.reverse()

return ' '.join(s1)

10.

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

class solution:

def sum_solution(self, n):

# write code here

def f(x,y):

return x+y

return reduce(f,range(n+1))

11.

寫乙個函式,求兩個整數之和,要求在函式體內不得使用+、-、*、/四則運算符號。

class solution:

def add(self, num1, num2):

# write code here

s=return sum(s)

12.給定乙個陣列a[0,1,...,n-1],請構建乙個陣列b[0,1,...,n-1],其中b中的元素b[i]=a[0]*a[1]*...*a[i-1]*a[i+1]*...*a[n-1]。不能使用除法。

class solution:

def multiply(self, a):

# write code here

s=1b=

for i in range(len(a)):

arr = a[:i] + a[i+1:]

for j in arr:

s*=j

s=1return b

javascript劍指offer程式設計練習 4

題目描述 從上往下列印出二叉樹的每個節點,同層節點從左至右列印。function treenode x function printfromtoptobottom root let queue queue.push root let result while queue.length if node...

《劍指offer》程式設計在練評判

劍指offer 面試題集收錄彙總 面試題1 賦值運算子函式 面試題2 實現singleton模式 面試題3 二維陣列中的查詢 已收錄面試題4 替換空格 已收錄面試題5 從頭到尾列印鍊錶 已收錄面試題6 重建二叉樹 已收錄面試題7 用兩個棧實現佇列 已收錄面試題8 旋轉陣列的最小數字 已收錄面試題9 ...

劍指offer之Python練習三

1.用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。class solution def init self self.stack1 self.stack2 def push self,node write code here def pop self return...