1385 兩個陣列間的距離值

2021-10-25 05:52:35 字數 3255 閱讀 7256

給你兩個整數陣列 arr1 , arr2 和乙個整數 d ,請你返回兩個陣列之間的 距離值 。

「距離值」定義為符合此距離要求的元素數目:對於元素 arr

1[i]

arr1[i]

arr1[i

] ,不存在任何元素 arr

2[j]

arr2[j]

arr2[j

] 滿足 ∣ar

r1[i

]−ar

r2[j

]∣

<=d

|arr1[i]-arr2[j]| <= d

∣arr1[

i]−a

rr2[

j]∣<=d

示例 1:

輸入:arr1 = [4,5,8], arr2 = [10,9,1,8], d = 2

輸出:2

解釋:對於 arr1[0]=4 我們有:

|4-10|=6 > d=2

|4-9|=5 > d=2

|4-1|=3 > d=2

|4-8|=4 > d=2

所以 arr1[0]=4 符合距離要求

對於 arr1[1]=5 我們有:

|5-10|=5 > d=2

|5-9|=4 > d=2

|5-1|=4 > d=2

|5-8|=3 > d=2

所以 arr1[1]=5 也符合距離要求

對於 arr1[2]=8 我們有:

|8-10|=2 <= d=2

|8-9|=1 <= d=2

|8-1|=7 > d=2

|8-8|=0 <= d=2

存在距離小於等於 2 的情況,不符合距離要求

故而只有 arr1[0]=4 和 arr1[1]=5 兩個符合距離要求,距離值為 2

示例 2:

輸入:arr1 = [1,4,2,3], arr2 = [-4,-3,6,10,20,30], d = 3

輸出:2

示例 3:

輸入:arr1 = [2,1,100,3], arr2 = [-5,-2,10,-3,7], d = 6

輸出:1

一、加入訊號值作為判斷條件

class

solution

:def

findthedistancevalue

(self, arr1: list[

int]

, arr2: list[

int]

, d:

int)

->

int:

count =

0for i in arr1:

flag =

1for j in arr2:

ifabs

(i - j)

<= d:

flag =

0break

if flag :

count +=

1return count

二、for

−els

efor-else

for−el

se語句

在python中的while或者for迴圈之後還可以有else子句,作用是for迴圈中if條件一直不滿足,則最後就執行else語句

class

solution

:def

findthedistancevalue

(self, arr1: list[

int]

, arr2: list[

int]

, d:

int)

->

int:

count =

0for i in arr1:

for j in arr2:

ifabs

(i - j)

<= d:

break

else

: count +=

1return count

三、逆向思路

返回此距離要求的元素數目,即返回陣列長度減去此陣列不滿足此距離要求的元素數目

class

solution

:def

findthedistancevalue

(self, arr1: list[

int]

, arr2: list[

int]

, d:

int)

->

int:

count =

0for i in arr1:

for j in arr2:

ifabs

(i - j)

<= d:

count +=

1break

return

len(arr1)

- count

四、二分查詢

找到a rr

2[

]arr2

arr2

中最接近arr

1[i]

arr1[i]

arr1[i

]的值,比較差值,其他的差值都大於這個值。

也許可以用其他查詢方法做這道題

class

solution

:def

findthedistancevalue

(self, arr1: list[

int]

, arr2: list[

int]

, d:

int)

->

int:

arr2.sort(

) cnt =

0for x in arr1:

p = bisect.bisect_left(arr2, x)

if p ==

len(arr2)

orabs

(x - arr2[p]

)> d:

if p ==0or

abs(x - arr2[p -1]

)> d:

cnt +=

1return cnt

leetcode 1385 兩個陣列間的距離值

1385.兩個陣列間的距離值 難度簡單12 給你兩個整數陣列arr1,arr2和乙個整數d,請你返回兩個陣列之間的距離值。距離值 定義為符合此描述的元素數目 對於元素arr1 i 不存在任何元素arr2 j 滿足 arr1 i arr2 j d。示例 1 輸入 arr1 4,5,8 arr2 10,...

LeetCode 1385 兩個陣列間的距離值

給你兩個整數陣列 arr1 arr2 和乙個整數 d 請你返回兩個陣列之間的 距離值 距離值 定義為符合此距離要求的元素數目 對於元素 arr1 i 不存在任何元素 arr2 j 滿足 arr1 i arr2 j d 示例 1 輸入 arr1 4,5,8 arr2 10,9,1,8 d 2 輸出 2...

5348 兩個陣列間的距離值

給你兩個整數陣列 arr1 arr2 和乙個整數 d 請你返回兩個陣列之間的 距離值 距離值 定義為符合此描述的元素數目 對於元素 arr1 i 不存在任何元素 arr2 j 滿足 arr1 i arr2 j d 1.簡單搜尋 class solution object def findthedis...