好比int[] numbers = {1,3,5,7,8,25,4,20}; 25前面的總和爲24,25後面的總和也是24,25這個點就是平衡點;假如一個數組中的元素,其前面的部分等於後面的部分,那麼這個點的位序就是平衡點
要求:返回任何一個平衡點python
1 def balance_point(li): 2 start = 0 3 end = len(li)-1 4 sum_start = li[start] 5 sum_end = li[end] 6 while start < end: 7 if sum_start == sum_end and end-start == 2: 8 return start+1 9 if sum_start < sum_end: 10 start += 1 11 sum_start += li[start] 12 else: 13 end -= 1 14 sum_end += li[end] 15 return -1
支配數:數組中某個元素出現的次數大於數組總數的一半時就成爲支配數,其所在位序成爲支配點;好比int[] a = {3,3,1,2,3};3爲支配數,0,1,4分別爲支配點;
要求:返回任何一個支配點git
1 def control_point(li): 2 count_li = len(li)/2 3 for i in li: 4 if li.count(i) > count_li: 5 return i 6 7 return -1
冒泡排序是最簡單且穩定的排序方式,時間複雜度爲O(n*n).下面主要使用Python range()函數控制循環,以及python返回多個值的性質,使得代碼很簡單github
def bubble_sort(li): for i in range(len(li)-1, 0, -1): for j in range(0,i): if li[j] > li[j+1]: li[j+1], li[j] = li[j], li[j+1]
定義:素數又叫質數維基百科數組
from math import sqrt def sushu_out(n): result = [] for num in range(2, n): flag = True for j in range(2, int(sqrt(num))+1): if num % j == 0: flag = False break if flag: result.append(num) print result, len(result)
不改變原來順序app
定義:斐波那契數列函數
def fib(n): ret = [] a = 0 b = 1 for i in range(0, n): ret.append(b) # 主意此處不能使用ret[i] = b ,會致使數組越界,由於ret如今爲空,Java中數組初始化要給定長度,Python不一樣。 a, b = b, a+b return ret