说下我的思路
AC!
python
class Solution:
def getStrongest(self, arr, k):
s = sorted(arr)
mindex = (len(s) - 1) // 2
mvalue = s[mindex]
temp = []
for i in s:
temp.append([abs(i-mvalue),i])
def sorttemp(s1,s2):
if s1[0] < s2[0]:
return 1
if s1[0] > s2[0]:
return -1
if s1[0] == s2[0] and s1[1] > s2[1]:
return -1
return 1
return [x[1] for x in sorted(temp, sorttemp)[:k]]
python
class Solution:
def getStrongest(self, arr: List[int], k: int) -> List[int]:
n = len(arr)
arr = sorted(arr)
mid = arr[(n - 1) // 2]
def mykey(x):
return (abs(x - mid), x)
arr = sorted(arr, key=mykey)
return arr[n - k:]
改进思路
使用排序+双指针
周赛时考虑上面一种方法写起来较快,而且没有TLE。双指针方法,没有尝试,代码暂略。感兴趣的小伙伴可以尝试一下。