求有序陣列中處於 left,right 區間的部分

2021-07-29 14:18:27 字數 1218 閱讀 2004

該問題可分解為求陣列中第乙個不小於left的下標和求陣列中最後乙個不大於right的下標。

#include 

#include

//求陣列中第乙個不小於left的下標

int firstnotlower(const

std::vector

& num, const

int left)

//low和high相鄰後,分別與left比較來判斷返回值

//這裡包含num元素個數為1或2的情況

if (num[low] >= left)

return low;

else

if (num[high] < left)

return -1;

else

return high;

}//求陣列中最後乙個不大於right的下標

int lastnothigher(const

std::vector

& num, const

int right)

//low和high相鄰後,分別與right比較來判斷返回值

//這裡包含num元素個數為1或2的情況

if (num[high] <= right)

return high;

else

if (num[low] > right)

return -1;

else

return low;

}//主問題求解

int getinterval(const

std::vector

& num, int left, int right, std::vector

& res)

int main() ;

//std::vectornum(&a[0],&a[17]);

std::vector

num(a,a + sizeof(a) / sizeof(int));

std::vector

res;

int n = getinterval(num, 33, 99, res);

if (n == -1)

else

if (n == -2)

else

return

0;}

注意main函式中的注釋行,其結果是將前16個值賦值給vector,別問我是怎麼弄的這個奇葩寫法!!!( ✘_✘ )↯

有序陣列求平方有序對應陣列

977給定乙個按非遞減順序排序的整數陣列 a,返回每個數字的平方組成的新陣列,要求也按非遞減順序排序。示例 1 輸入 4,1,0,3,10 輸出 0,1,9,16,100 示例 2 輸入 7,3,2,3,11 輸出 4,9,9,49,121 有序,陣列,平方,還有序 1 直接平方之後重新排一下,so...

演算法 有序陣列求目標和

在有序陣列中找出兩個數,使它們的和為 target.例如 array target 為 6 則 返回和為 6 的 array下標 使用雙指標,乙個指標指向值較小的元素,乙個指標指向值較大的元素。指向較小元素的指標從頭向尾遍歷,指向較大元素的指標從尾向頭遍歷。param nums the sorted...

23 刪除有序陣列中的元素,陣列仍然有序 陣列

刪除乙個有序陣列的乙個元素,採用兩個陣列實現 實現 2017年6月19日16 16 31 功能 刪除陣列中乙個資料之後陣列依然有序 include stdio.h define m 9 int main int b m 1 int i,j,num bool flag printf 請輸入將要刪除的資...