10月29日网宿的面试题:
问题1,用一行表达式判断任意一个数是否是2的幂(2,4,8,16.........)。
问题2,给一个可能有负数的整形数组,如(1,32,-2,-55,10,0,99,),写一个你认为最高效的程序返回它所有子串的和的最大 值,并求出它的时间复杂度。
问题1,用一行表达式判断任意一个数是否是2的幂(2,4,8,16.........)。
问题2,给一个可能有负数的整形数组,如(1,32,-2,-55,10,0,99,),写一个你认为最高效的程序返回它所有子串的和的最大 值,并求出它的时间复杂度。
public static void main(String args[]){
int[] array = {2, 3, 4, 6, 8};
for (int i=0; i<array.length; i++){
int n = array[i];
System.out.println(Math.log10(n) % Math.log10(2) == 0);
}
}
}数学很重要...
测试:public class Main{
public static void main(String[] args) {
for(int i=2;i<100;i++){
if((i&(i-1))==0){
System.out.println(i);
}
}
}
}
public static void func(int[] array) {
int m = 0;
int result = 0;
for (int i = 0; i < array.length; i++) {
m = m + array[i] > 0 ? m + array[i] : 0;
result = result > m ? result : m;
}
System.out.println(result);
}
时间复杂度O(n)
强大
public int Max = 0;public int Compute(int CurVal, int pos)
{
if (CurVal > Max) Max = CurVal;
if (pos > Test.Length - 1) return CurVal;//数组结束
return Compute(CurVal + Test[pos], pos + 1);
} Subject3 lobj_Test = new Subject3();
for (int i = 0; i < lobj_Test.Test.Length - 1; i++)
{
lobj_Test.Compute(lobj_Test.Test[i], i+1);
}
MessageBox.Show(lobj_Test.Max.ToString());