功能描述:找出一个int[]数组中满足 2^n的数字,然后组成的新的数组
输入:{4,3,8}
输出:{4,8}
代码如下:
package 华为机试题;
import java.awt.List;
import java.util.LinkedList;
/**
* @author Hutongling
*
* @time:2017年4月8日 下午5:43:28
*/
public class 找出数组中2的指数次方的数字并组成新的数组 {
static boolean isPower2(int num){
if(num==1)
return true;
else {
for(int i=1;i<num;i++){
if(Math.pow(2, i)==num)
return true;
else
continue;
}
}
return false;
}
static LinkedList<Integer> newArray(int[] data){
if(data==null || data.length==0)
return null;
LinkedList<Integer> result=new LinkedList<Integer>();
for(int i=0;i<data.length;i++){
if(isPower2(data[i]))
result.add(data[i]);
}
return result;
}
public static void main(String[] args) {
int[] data = { 4, 3, 8, 16, 12, 29, 16, 1 };
LinkedList<Integer> result = newArray(data);
System.out.print("新的指数数组为:");
for (int i = 0; i < result.size(); i++) {
System.out.print(result.get(i) + " ");
}
}
}
代码结果:
新的指数数组为:4 8 16 16 1