一道麵試題:求一個滿足要求的數組
FROM:qitian0008(https://blog.csdn.net/qitian0008/article/details/7963864)
正整數序列Q中的每個元素都至少能被正整數a和b中的一個整除,現給定a和b,需要計算出Q中的前幾項,例如,當a=3,b=5,N=6時,序列為3,5,6,9,10,12
(1)、設計一個函數void generate(int a,int b,int N ,int * Q)計算Q的前幾項(2)、設計測試數據來驗證函數程序在各種輸入下的正確性。
package Designpattern.Program; /** * @FullName:findArray.java * @CreationTime:2012-9-10-下午3:48:34 * @Author:qi QQ:470413137 */ public class findArray { public static void main(String[] args) { int a=2,b=5,N=6; int arr[] = new int[N]; getArray(a,b,N,arr); for(int ar:arr){ System.out.print(" "+ar); } } private static void getArray(int a, int b, int n, int[] arr) { int i=0; int aMin=a; int bMin=b; while(i<n){ if(i==0){ arr[i]=a; i++; continue; } aMin+=a; if(aMin<bMin){ arr[i]=aMin; } else { arr[i]=bMin; bMin+=b; aMin-=a; } i++; } } }時間複雜度為O(N).
最後更新:2017-04-03 18:52:08