java - 如果 a 和 b 具有相同的项目但不一定以相同的顺序返回 true,否则如果传递的数组中的任何一个为 null,则返回 false
问题描述
我在使用此代码时遇到问题,并收到错误消息说预期为假但为真
*
* @param a
* @param b
* @return true if a and b have the same items but not necessarily in the same
* order, false otherwise return false if either of array passed is null
*/
public boolean same(int[] a, int[] b) {
if (a == b)
return true;
if (a == null || b == null)
return false;
int length = a.length;
if (b.length != length)
return false;
for (int i = 0; i < length; i++)
if (a[i] == b[i]) {
return true;
}
return false;
}// to be completed
解决方案
我想到的第一个解决方案:制作两个数组的副本,对副本进行排序,然后比较它们:
public static boolean same(int[] a, int[] b) {
if (a == b)
return true;
if (a == null || b == null)
return false;
int length = a.length;
if (b.length != length)
return false;
int[] aa = Arrays.copyOf(a, length);
int[] bb = Arrays.copyOf(b, length);
Arrays.sort(aa);
Arrays.sort(bb);
return Arrays.equals(aa, bb);
}
推荐阅读
- css - 为什么 Woocommerce 商店无法在移动设备上运行?
- python - Plotly/Dash 大数据集 Densitymapbox 内存使用情况
- angularjs - 角度指令未在动态元素上触发
- excel - 复制没有填充条件格式列的单元格
- php - 通过回调参数类型紧密耦合的依赖关系
- c# - 控制模板制作精美按钮
- sql - Oracle中Case语句中的Select语句
- kubernetes - 无法启动 Kubernetes 集群。etcd 和 api-server 错误
- apache-spark - Spark - 如何将文本文件转换为多列模式 DataFrame/Dataset
- php - php 使用字符串作为变量名 print_r