1**.py'''2
1.買賣**的最佳時機給定乙個陣列,它的第?i?個元素是一支給定**第?i?天的**。
3如果你最多隻允許完成一筆交易(即**和賣出一支**),設計乙個演算法來計算你所能獲取的最大利潤。
4注意你不能在****前賣出**。(5分)
5要求:
61.輸入: [7,1,5,3,6,4]
72.輸出: 5
83.解釋: 在第 2 天(**** = 1)的時候**,在第 5 天(**** = 6)的時候賣出,最大利潤 = 6-1 = 5 。
94.注意利潤不能是 7-1 = 6, 因為賣出**需要大於****。
10'''
11class
solution:
12def
maxprofit(self, prices):
1314 max_profit1 =0
15if len(prices) <= 1:
16return
max_profit1
1718 min_profit =prices[0]
19 max_profit2 =0
20for index in
range(len(prices)):
21if prices[index] <=min_profit:
22 min_profit =prices[index]
23elif prices[index] - min_profit >max_profit2:
24 max_profit2 = prices[index] -min_profit
25return
max_profit2
2627
'''28
給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。
29input: [0,1,0,3,12]
30output: [1,3,12,0,0]
31'''
32class
solution1:
33def
movezeroes(self, nums):
34 i = j =0
35for i in
range(len(nums)):
36if nums[i] !=0:
37 nums[j] , nums[i]=nums[i] , nums[j]
38 j += 1
3940
41'''
42抓了a,b,c,d四名犯罪嫌疑人,其中有一人是小偷,審訊中:
43?a說 我不是小偷;
44?b說 c是小偷;
45?c說 小偷肯定是d;
46?d說 c胡說!
47其中有三個人說的是實話,乙個人說的是假話,請程式設計推斷誰是小偷(用窮舉法和邏輯表示式)
48'''
4950
for i in range(4):
51 i += 1
52if 3 == ((i != 1) + (i == 3) + (i == 4) + (i != 4)):53#
利用ascii碼表輸出
54 str = chr(96 + i) + "
是小偷!"55
(str)
56請手寫插入查詢演算法,並且用注釋寫出思路,並且指出時間複雜度
5758
59def charu(nums,order = 1):60#
第乙個數不動,從第二個數開始比較
61for i in range(1,len(nums)):
62 j=i-1
63 tmp = nums[i] #
記錄本次待比較的詞語
64while j >=0:
65if tmp
66 nums[j+1] =nums[j]
67 nums[j] =tmp
68 j = j-1
69else:70
break
71if order == 1:
72return
nums
73else:74
return nums[::-1]
7576
7778 有1、2、3、4、5、6、7、8、9、10個數字,能組成多少個互不相同且無重複數字的五位數?都是多少?
7980 a = [1,2,3,4,5,6,7,8,9,10]
81def
test2(a):
82 i =0
83for a in range(1, 5):
84for b in range(1, 5):
85for c in range(1, 5):
86if a != b !=c:
87 a = (a * 100 + b * 10 +c)
88 i += 1
89print
(a)90
print("
一共有" + str(i) + "
種排列")91
9293 2. 二分查詢
9495 1.def
bin_search(data_set,val):
96 2. low =0
97 3. high = len(data_set)-1
98 4. while low <=high:
99 5. mid = (low+high)//2 #
整除2100 6. if data_set[mid] == val: #
如果等於要查詢的值,返回下標
101 7. return
mid102 8. elif data_set[mid] < val: #
如果列表中間的值小於需要的值
103 9. low = mid + 1 #
則把最小的下標改成mid+1
104 10. else: #
如果列表中間的值大於需要的值
105 11. high = mid - 1 #
則把最大的下標改成mid-1
106 12. return
#如果沒找到return空
107 zhengze_phone=r'
1[\d]
'108 r'
[\w]+@[\w]+\.[\w]
'
面試演算法題
前幾天,一好友去筆試,有一題 現在有1000個蘋果,和10個箱子,如何把這1000個蘋果裝在這10個箱子裡,才能使不管任何數量 1 1000 的蘋果,都能一次給出?當時,我們都想,出題這人。今天,在想移位的時候,突然想到了,這絕對是二進位制數的變種。分析 1000個蘋果,最接近1024,轉化為2進製...
面試演算法題
1 直方圖矩形最大值 class solution s.push i return res 2 第n個醜數 class solution return res.back 3 lru cache 最近最少使用頁面置換快取器 class lrucache int get int key void set...
某個面試演算法題
援引某人部落格 有乙個整數n,寫乙個函式f n 返回0到n之間出現的 1 的個數。比如f 13 6,現在f 1 1,問下乙個最大的f n n的n是什麼?writed by chszs public void fn int inputval 1000000 int cntforone 0 long c...