例1:n+1各不同的整數(a1,a2,a3,…an,m),假設有乙個亂序的整數序列,其中(a1,a2,a3,a4,…,an均出現兩次,m出現一次),需要找出出現一次的m。
#功能實現
num=[1,1,2,2,3,3,4,5,4,5,6,7,7,6,8,9,9,8,10]
num1={}
for i in range(len(num)):
if str(num[i]) not in num1:
num1[str(num[i])]=1
else:
num1[str(num[i])]+=1
num2=sorted(num1.items(),key=lambda x:x[1]) #key=排序的規則函式,自定義
num2[0][0]
#時間o(n)+o(nlogn),空間o(n+2)
結果:[('10', 1),
('3', 2),
('5', 2),
('6', 2),
('1', 2),
('4', 2),
('9', 2),
('2', 2),
('8', 2),
('7', 2)]
#僅出現一次的元素
num2[0][0]
out[121]: '10'
例2:問題描述:返回已經排序陣列中第乙個大於等於給定陣列的元素的位置。
例如陣列[1,2,3,5,9],給定數字3,返回2;給定數字4,返回3.
如果給定的數大於陣列中的最大值則返回陣列的長度。
#class solution:
def search(arr,target):
for i in range(len(arr)):
if targetarr[len(arr)-1]: #arr[len(arr)-1]陣列中最大值
return len(arr)
if (target==arr[i]) or (targetreturn i
arr=[1,2,3,5,9]
search(arr,3)
search(arr,4)
search(arr,10)
結果:arr=[1,2,3,5,9]
search(arr,3)
out[124]: 2
search(arr,4)
out[125]: 3
search(arr,10)
out[126]: 5
程式設計題練習 1
思路 建立兩個字元陣列,乙個按順序存放數字,乙個按順序存放字母,然拼接這兩個陣列。其實用string類會更好,這裡用vector輸入的時候帶空格,不過思想是一樣的 include include using namespace std class solution for int i 0 ifor ...
演算法練習1
自己不怎麼關注演算法,但是面試的時候常有一些公司就會給演算法題目,目的也很直接,自己每日一練就好。思路 使用純 c來實現。條件1,陣列b內所有數字加起來為10 動態調整陣列b內的數值。因為時間先後的原因,會導致先前統計個數出現的次數不正確。include include static int a 1...
演算法練習1
問題描述 兩字串變數 s m,分別經過若干次step1和step2後得 得到乙個新s 若輸入指定長度,請返回s要達到目標長度至少需要幾步 輸入 目標長度 int len 輸出 步數 int stepnum s a m step1 m s s s s step2 s s m 分析 1.通過分析得到 這...