查找 ArrayList 中第 n 次出现的数字的最佳方法是什么?
我已经知道什么了?
- To find 最后一个索引 https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#lastIndexOf-java.lang.Object-List接口中有获取数字的方法,该方法在ArrayList类中实现。
- 要找到第一次出现的地方indexOf https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#indexOf-java.lang.Object- method.
我正在解决什么问题?
在一个问题中,有一个包含不同数字的列表,我必须返回两个数字的索引,其总和等于目标数字。
前任:List = (1,2,1) & target = 2;
Now 1 + 1 =2
答案将是第一个 1 和第二个 1 的索引。
注意:我已经解决了这个问题并且我需要回答这个问题
顶端。检查解决方案 http://pastebin.com/HwV5w0cW
我做了什么?
public static void main(String[] args)
{
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(1);
int length = list.size();
int firstIndex = list.indexOf(1) + 1;
int secondIndex = firstIndex + list.subList(firstIndex, length).indexOf(1) + 1;
System.out.println(firstIndex);
System.out.println(secondIndex);
}
“所有相同数字的列表”
--> {n,n,...,n,n}。
“我必须返回总和等于目标数的前两个数字的索引”让我们假设目标=x。
由于你的列表充满了相同的数字,如果 x/2=n 你的索引将是 0 和 1,如果 x/2 !=n 你不会有任何匹配
问题后版本
int length=10;
int target=100;
int[] tab1= new int[length];
Object[] tab2= new Object[length];
Object[] tab2Sorted= new Object[length];
for (int i = 0; i < tab2Sorted.length; i++) {
for (int j = i; j < tab2Sorted.length; j++) {
if(tab2Sorted[i]+tab2Sorted[j]==target){
//do what you want on objects to get back indexes
}
}
//As tab3 is sorted you dont have to read all the array
if(tab2Sorted[i]>target/2){
break;
}
}
您只需将 tab2 和 tab2Sorted 类型从 Object 更改为自定义类型,保存第一个选项卡中的 int 及其索引
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)