今天面试中有一道算法题,好长时间没做算法了,虽然很简单,但是当时没做出来,记录一下
import numpy as np
a = np.array([1,4,5,6,4,7,5,4])
#找出数组中出现次数最多的数
def find_a(arr):
arr_sort = np.sort(arr)
ll = np.size(arr)
s = np.ones(ll)
for i in np.arange(ll-1):
if arr_sort[i+1] == arr_sort[i]:
s[i+1] = s[i]+1
return arr_sort[s.argmax()]
print(find_a(a))
想法是,首先把数组从小到大排序,设定每个数在数组中出现的次数等于1;再用循环记录每个数出现的次数,后面那个数等于前面的数表示该数又出现一次,则次数加1;最后输出次数最大的那个数