
假设有数组 A:[5,9,20],数组 B:[5,20];
最终得到新的数组:
要求:新数组的位数必须和数组 A 相同,每位数据只能是 0 或 1,根据 B 判断是 0 是 1,当 A 的一位元素出现在 B 中则为 1,未出现则为 0.
比如上面的数组最后生成的应该是:[1,0,1],因为第二位的 9 并没有出现在数组 B 中。
数组 A 和数组 B 的位数不定,但 B 数组要么空,要么就是 A 中的一个或多个,B 如果是空,则输出 A 数组位数的全 0 数组。
1 tlerbao OP 忘说语言了,js,php 都行;请教优雅写法。 |
2 tlerbao OP ``` // 我写的 $a = [5,9,20]; $b = [5,20]; return array_map(function ($aaa) use ($b) { return $ccc[] = in_array($aaa, $b) ? 1 : 0; }, $a); ``` |
3 marat1ren 2021 年 8 月 27 日 via iPhone 用异或计算,结果为 0 则两个数相同。 |
4 Chemist 2021 年 8 月 27 日 via iPhone 数组 a: 5, 9, 20 数组 b: 20, 5 的期望结果是啥? |
5 renmu123 2021 年 8 月 27 日 via Android 把 b 变成哈希,然后遍历一遍 a |
6 autoxbc 2021 年 8 月 27 日 ```js return A.map( e => +B.includes(e) ) |
7 rrfeng 2021 年 8 月 28 日 via Android b 变 map a 遍历一遍完事,没有更好的写法了 不同的知识不同语言提供的语法糖了 |
8 Rocketer 2021 年 8 月 28 日 via iPhone 得先把 B 变成 Set,否则复杂度就是 O(N2)了。 const bSet = new Set(b); return a.map(n => bSet.has(n) ? 1 : 0); 复杂度 O(N) |
9 LxExExl 2021 年 8 月 28 日 at work: ``` Vec\map($a, $element ==> C\contains($b, $element ) ? 1 : 0); ``` in leetcode: build HashSet and iterate array A |
10 eric96 2021 年 8 月 28 日 作业题请自己做 |
11 CokeMine 2021 年 8 月 30 日 via Android includes 复杂度是 on 的。可以像楼上那样把它变成 set |