Java 求最大值并进行运算
我正在处理一个黑客银行问题,该问题说明: 问题是在数组中找到一个包含范围[L,R],这样当该范围按降序排序时,对排序范围中的前2个元素执行AND运算将产生最大可能的结果。然后,该函数必须返回一个包含2个整数的数组,其中索引0包含与数组中L的索引相对应的整数,索引1包含与数组中R的索引相对应的整数 如果有效答案超过1个,则选择L值最低的答案;如果两个或多个有效答案具有相同的L值,请选择跨越最短范围的答案 示例数组={6,3,6} 输出应为0,2 说明:范围[0,2]在排序为{6,6,3}时变为{6,6,3}。然后,操作6和6将得到最大可能答案。因此,结果应为[0,2] 我试过这个问题,得到了以下答案:Java 求最大值并进行运算,java,arrays,algorithm,Java,Arrays,Algorithm,我正在处理一个黑客银行问题,该问题说明: 问题是在数组中找到一个包含范围[L,R],这样当该范围按降序排序时,对排序范围中的前2个元素执行AND运算将产生最大可能的结果。然后,该函数必须返回一个包含2个整数的数组,其中索引0包含与数组中L的索引相对应的整数,索引1包含与数组中R的索引相对应的整数 如果有效答案超过1个,则选择L值最低的答案;如果两个或多个有效答案具有相同的L值,请选择跨越最短范围的答案 示例数组={6,3,6} 输出应为0,2 说明:范围[0,2]在排序为{6,6,3}时变为{6
static int[] process(int[] array) {
int max=0;
List<Integer[]> list = new ArrayList<>();
Integer[] index = new Integer[2];
for (int i = 0; i < array.length; i++) {
for(int j =i+1 ; j <= array.length -1 ; j++){
int z = array[i] & array[j];
if(z > max){
max=z;
index[0] = i;
index[1] = j;
list.add(index);
}
}
}
int[] result = new int[2];
result[0] = index[0];
result[1] = index[1];
int least = result[0] - result[1];
for(int i=1; i< list.size(); i++) {
Integer[] data = list.get(i);
int temp = index[0] - index[1];
if(temp < least) {
least = temp;
result[0] = index[0];
result[1] = index[1];
}
}
return result;
}
静态int[]进程(int[]数组){
int max=0;
列表=新的ArrayList();
整数[]索引=新整数[2];
for(int i=0;i
这个程序只通过了一些测试用例。我无法找出这个程序中的问题所在,请您帮助我。您的代码和两个值的所有组合,以找到最大值,并错误地得出这样的结论,即当您必须选择它们之间的两个最大值时,最大值组合将保持不变 例如,对于输入
6,2,8,6
,您得出结论,因为6和6
=6
是最大值,所以答案是[0,3]
=>8,6,6,2
8和6
0
(哎呀!),而[0,1]
6,2
你的逻辑前提是有缺陷的。重新思考并重试。哪些测试失败?你从调试中得出了什么结论?hackerrank的想法是让你自己去弄清楚的。如果我们想弄明白,我们可以自己玩黑客游戏。