Python答题:LinteCode简单题库(一)
生活随笔
收集整理的這篇文章主要介紹了
Python答题:LinteCode简单题库(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
366. 斐波納契數列:查找斐波納契數列中第 N 個數。
所謂的斐波納契數列是指:
前2個數是 0 和 1 。
第 i 個數是第 i-1 個數和第i-2 個數的和。
斐波納契數列的前10個數字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...
給定 1,返回 0
給定 2,返回 1
給定 10,返回 34
參考答案:
def fibonacci(self, n):
# write your code here
i = 0
a,b =0, 1
while i < n-1:
a,b =b,a+b
i +=1
return a?
9. Fizz Buzz 問題?
給你一個整數n. 從 1 到 n 按照下面的規則打印每個數:
如果這個數被3整除,打印fizz.
如果這個數被5整除,打印buzz.
如果這個數能同時被3和5整除,打印fizz buzz.
比如 n = 15, 返回一個字符串數組:
[
? "1", "2", "fizz",
? "4", "buzz", "fizz",
? "7", "8", "fizz",
? "buzz", "11", "fizz",
? "13", "14", "fizz buzz"
]
參考答案:
def fizzBuzz(self, n):
# write your code here
result = []
for i in range(1,n+1):
if i %15 ==0:
result.append('fizz buzz')
elif i%5==0:
result.append('buzz')
elif i%3==0:
result.append('fizz')
else:
result.append(str(i))
return result
157. 判斷字符串是否沒有重復字符?
實現一個算法確定字符串中的字符是否均唯一出現
給出"abc",返回 true
給出"aab",返回 false
參考答案:
def isUnique(self, str):
results = []
new_results = []
for i in str: ? ? ??
results.append(i)
for i in str: ? ? ? ? ?
if i not in new_results:
new_results.append(i)
if results==new_results:
return True
else:
return False
172. 刪除元素?
給定一個數組和一個值,在原地刪除與值相同的數字,返回新數組的長度。
元素的順序可以改變,并且對新的數組不會有影響。
給出一個數組 [0,4,4,0,0,2,4,4],和值 4
返回 4 并且4個元素的新數組為[0,0,0,2]
參考答案:
def removeElement(self, A, elem):
i = 0
n = len(A)
while i<n:
if A[i]==elem:
n-=1
del A[i]
else:
i+=1
return n
6. 合并排序數組?
合并兩個排序的整數數組A和B變成一個新的數組。
給出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]
參考答案:
def mergeSortedArray(self, A, B):
for i in range(len(A)):
B.append(A[i])
B = sorted(B)
return B
463. 整數排序?
給一組整數,按照升序排序,使用選擇排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。
對于數組 [3, 2, 1, 4, 5], 排序后為:[1, 2, 3, 4, 5]。
參考答案:
def sortIntegers(self, A):
n = len(A)
for i in range(n-1):
temp=i
for j in range(i+1,n):
if A[j]<A[temp]:
A[j],A[temp]=A[temp],A[j]
A[temp],A[i]=A[i],A[temp]
print(A)
100. 刪除排序數組中的重復數字?
給定一個排序數組,在原數組中刪除重復出現的數字,使得每個元素只出現一次,并且返回新的數組的長度。
不要使用額外的數組空間,必須在原地沒有額外空間的條件下完成。
給出數組A =[1,1,2],你的函數應該返回長度2,此時A=[1,2]。
參考答案:
循環數組,找到下一個元素A[i+1]等于A[i],就刪除A[i+1],
注意的是循環次數需要 -1,避免索引超限。
def removeDuplicates(self, A):
i = 0
while i < len(A)-1:
if A[i] == A[i+1]:
A.remove(A[i])
else:
i += 1
return len(A)
101. 刪除排序數組中的重復數字 II?
跟進“刪除重復數字”:
如果可以允許出現兩次重復將如何處理?
參考答案:
允許重復一次,則直接檢查元素A[i+2]是否等于A[i]即可,
因為如果A[i+2]等于A[i],那么A[i+1]也等于A[i],
此時刪除A[i+2]即可。
當然,循環次數需要 -2
def removeDuplicates(self, nums):
i = 0
while i < len(nums)-2:
if nums[i] == nums[i+2]:
nums.remove(nums[i])
else:
i += 1
return len(nums)
2. 尾部的零?
設計一個算法,計算出n階乘中尾部零的個數
11! = 39916800,因此應該返回 2
參考答案:
對于n!來說,每當有5,必出現一個零,所以其實計算n以內有多少個5即可。
if n == 0 :?
return 1
x = 1
while n>5:
x += n/5
n = n/5
return x-1
所謂的斐波納契數列是指:
前2個數是 0 和 1 。
第 i 個數是第 i-1 個數和第i-2 個數的和。
斐波納契數列的前10個數字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...
給定 1,返回 0
給定 2,返回 1
給定 10,返回 34
參考答案:
def fibonacci(self, n):
# write your code here
i = 0
a,b =0, 1
while i < n-1:
a,b =b,a+b
i +=1
return a?
9. Fizz Buzz 問題?
給你一個整數n. 從 1 到 n 按照下面的規則打印每個數:
如果這個數被3整除,打印fizz.
如果這個數被5整除,打印buzz.
如果這個數能同時被3和5整除,打印fizz buzz.
比如 n = 15, 返回一個字符串數組:
[
? "1", "2", "fizz",
? "4", "buzz", "fizz",
? "7", "8", "fizz",
? "buzz", "11", "fizz",
? "13", "14", "fizz buzz"
]
參考答案:
def fizzBuzz(self, n):
# write your code here
result = []
for i in range(1,n+1):
if i %15 ==0:
result.append('fizz buzz')
elif i%5==0:
result.append('buzz')
elif i%3==0:
result.append('fizz')
else:
result.append(str(i))
return result
157. 判斷字符串是否沒有重復字符?
實現一個算法確定字符串中的字符是否均唯一出現
給出"abc",返回 true
給出"aab",返回 false
參考答案:
def isUnique(self, str):
results = []
new_results = []
for i in str: ? ? ??
results.append(i)
for i in str: ? ? ? ? ?
if i not in new_results:
new_results.append(i)
if results==new_results:
return True
else:
return False
172. 刪除元素?
給定一個數組和一個值,在原地刪除與值相同的數字,返回新數組的長度。
元素的順序可以改變,并且對新的數組不會有影響。
給出一個數組 [0,4,4,0,0,2,4,4],和值 4
返回 4 并且4個元素的新數組為[0,0,0,2]
參考答案:
def removeElement(self, A, elem):
i = 0
n = len(A)
while i<n:
if A[i]==elem:
n-=1
del A[i]
else:
i+=1
return n
6. 合并排序數組?
合并兩個排序的整數數組A和B變成一個新的數組。
給出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]
參考答案:
def mergeSortedArray(self, A, B):
for i in range(len(A)):
B.append(A[i])
B = sorted(B)
return B
463. 整數排序?
給一組整數,按照升序排序,使用選擇排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。
對于數組 [3, 2, 1, 4, 5], 排序后為:[1, 2, 3, 4, 5]。
參考答案:
def sortIntegers(self, A):
n = len(A)
for i in range(n-1):
temp=i
for j in range(i+1,n):
if A[j]<A[temp]:
A[j],A[temp]=A[temp],A[j]
A[temp],A[i]=A[i],A[temp]
print(A)
100. 刪除排序數組中的重復數字?
給定一個排序數組,在原數組中刪除重復出現的數字,使得每個元素只出現一次,并且返回新的數組的長度。
不要使用額外的數組空間,必須在原地沒有額外空間的條件下完成。
給出數組A =[1,1,2],你的函數應該返回長度2,此時A=[1,2]。
參考答案:
循環數組,找到下一個元素A[i+1]等于A[i],就刪除A[i+1],
注意的是循環次數需要 -1,避免索引超限。
def removeDuplicates(self, A):
i = 0
while i < len(A)-1:
if A[i] == A[i+1]:
A.remove(A[i])
else:
i += 1
return len(A)
101. 刪除排序數組中的重復數字 II?
跟進“刪除重復數字”:
如果可以允許出現兩次重復將如何處理?
參考答案:
允許重復一次,則直接檢查元素A[i+2]是否等于A[i]即可,
因為如果A[i+2]等于A[i],那么A[i+1]也等于A[i],
此時刪除A[i+2]即可。
當然,循環次數需要 -2
def removeDuplicates(self, nums):
i = 0
while i < len(nums)-2:
if nums[i] == nums[i+2]:
nums.remove(nums[i])
else:
i += 1
return len(nums)
2. 尾部的零?
設計一個算法,計算出n階乘中尾部零的個數
11! = 39916800,因此應該返回 2
參考答案:
對于n!來說,每當有5,必出現一個零,所以其實計算n以內有多少個5即可。
if n == 0 :?
return 1
x = 1
while n>5:
x += n/5
n = n/5
return x-1
總結
以上是生活随笔為你收集整理的Python答题:LinteCode简单题库(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sklearn分类器算法:决策树与随机森
- 下一篇: python中的生成器