演算法設計題練習1

2021-08-29 01:53:32 字數 1268 閱讀 9217

例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.通過分析得到 這...