華為機試測試 求有序陣列中最長的等差序列

2022-05-06 07:18:10 字數 607 閱讀 2215

原題目是求乙個無序陣列中最長的等差數列。

求隨機數構成的陣列中找到長度大於=3 的最長的等差數列, 輸出等差數列由小到大:

如果沒有符合條件的就輸出

格式:輸入[1,3,0,5,-1,6]

輸出[-1,1,3,5]

思路:1、排序

2、d的取值範圍是[0,max-min],共有max-min+1種情況

3、對每一種情況進行查詢

4、對於公差d,要求最長的等差序列,需要兩個迴圈,乙個外迴圈從頭到尾遍歷,內迴圈從外迴圈的起始遍歷點開始利用公式 arr[i]=arr[start]+len*d,假如符合就長度加1假如大於就跳出迴圈。

public

static

void getprogressarray(int array ,int

d)

}else

if(array[i]>(array[startindex]+d*plen))}}

int arr=new

int[maxlen];

for(int i=0;i)

system.out.println(arrays.tostring(arr));

}

求兩有序陣列的中位數

給定兩個大小為 m 和 n 的正序 從小到大 陣列nums1和nums2 找出並返回這兩個正序陣列的中位數 時間複雜度o log m n 解法 二分法查詢 public class main int nums2 system.out.println mid solution.method nums1...

尋找有序陣列的反轉陣列中最小的元素

尋找有序陣列的反轉陣列中最小的元素 1.利用二分查詢法查詢。設定兩個指標,分別指向陣列的第乙個p1和最後乙個元素p2。2.得到陣列中間位置的元素,將這個元素與第乙個元素比較,如果大於第一元素,證明這個最小的數字在這個中間元素的後面,此時將p1指向中間元素的下乙個位置 如果中間元素小於第乙個元素,那麼...

華為機試 求兩個數之間的素數

c c xy 03.求兩個數之間的素數 題目描述 給2個數,求這兩個數字之間的素數個數,並將素數的個數返回,將求出的素數輸出至pout中。對於如下函式即求 pinput 0 pinput 1 之間的素數,將得到的素數輸出至pout中,返回素數的個數。認為只能夠被1和它本身整除的數字是素數。int v...