问题:
假设这是我的数组{1,2,3,4,5,6,7,8}
中的数字
每个数字都是一个位置,如::
1=1 ,2=2 , 3=3, 4=4, 5=5, 6=6, 7=7, 8=8
它不是数组位置,而只是数字位置。现在,我想删除奇数位置的数字,然后变成
2,4,6,8 :: 2=1, 4=2, 6=3, 8=4,
再次,我想从奇数位置删除,使其变为4,8 :: 4=1, 8=2
现在答案是8
,那么如何获得此8
代码:
int [] arr = new int [] {1, 2, 3, 4, 5, 6, 7, 8}; //I am taking certain number in array
System.out.println("Elements of given array present on even position:");
for (int i = 1; i < arr.length; i = i+2) {
System.out.println(arr[i]);
}
必须将值设为8,但在输出中我得到:
2
2
2
2
4
4
4
4
以此类推
答案 0 :(得分:0)
这将打印出偶数:
for (int i = 0; i < arr.length; i++)
{
if (arr[i] % 2 == 0)
{
System.out.println(arr[i]);
}
}
如果要从数组中删除奇数位置元素,请新建一个,并使用上面的代码排除奇数元素,如下所示:
ArrayList<Integer> newArr = new ArrayList<>();
for (int i = 0; i < arr.length; i++)
{
if (i % 2 == 0)
{
newArr.add(arr[i]);
}
}
答案 1 :(得分:0)
您可以使用ArrayList
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0; i<arr.length; i++){
if(i % 2 == 0){ //if divide by 2 gives remainder 0 it is even
list.add(arr[i]);
}
}
arr=list.toArray();//get the array version of the list
然后,您可以将其放入while循环中进行操作,直到只剩一个为止。
int [] arr = new int [] {1, 2, 3, 4, 5, 6, 7, 8};
while(arr.length>1){
...
}
System.out.println(arr[0]);
请记住,我们从0开始计数,因此第一个位置(i = 0)将是偶数,第二个位置(i = 1)将是不平坦的。
最终密码:
int [] arr = new int [] {1, 2, 3, 4, 5, 6, 7, 8};
while(arr.length>1){
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0; i<arr.length; i++){
if(i % 2 == 0){ //if divide by 2 gives remainder 0 it is even
list.add(arr[i]);
}
}
arr=list.toArray();//get the array version of the list
}
System.out.println(arr[0]);
答案 2 :(得分:0)
这应该为您做
int [] arr = new int [] {1, 2, 3, 4, 5, 6, 7, 10, 11, 12}; //I am taking certain
System.out.println("Elements of given array present on even position:");
int counter=2;
while(counter<=arr.length){
counter*=2;
}
System.out.println(arr[(counter/2)-1]);
让我知道这是否可行
答案 3 :(得分:0)
正如我在评论中所说,您想要2的最大功效:
int max=0;
for (int i=0;i<arr.length;i++) {
int pos = arr[i];
if((pos & (pos-1)) == 0) { // check if pos is a power of 2
max =java.lang.Math.max(max, pos);
}
}
System.out.println(max)
如果arr = {1,2,3,4,5,6,7,8}; =>输出8
如果arr = {1,2,3,4,5,6,7,8,9} =>输出8
如果arr = {1,2,3,...,20} =>输出16