C 刷題筆記 查詢演算法

2021-10-07 15:15:06 字數 1315 閱讀 7392

不會出現越界,只有在left==right時,跳出迴圈,因此需要對left判斷適應邊界情況

int

binary_search

(const

int*array,

int num,

int target)

else

if(array[mid]

> target)

else

if(array[mid]

== target)}if

(array[left]

== target)

return left;

return-1

;}

不想要判斷邊界,則更改迴圈條件為left <= right

對於有序數列 1 2 3 3 3 3 4 5 6,查詢目標第一次出現的位置,即左邊界問題。

不會出現越界,只有在left==right時,跳出迴圈

int

left_bound

(const

int*array,

int num,

int target)

else

if(array[mid]

> target)

else

if(array[mid]

== target)

}// 最後要檢查 left 越界的情況

if(left >= num || array[left]

!= target)

return-1

;return left;

}

把乙個陣列最開始的若干個元素搬到陣列的末尾,稱之為陣列的旋轉。要求:輸入乙個非遞減排序的陣列的乙個旋轉,輸出其最小元素。如:陣列為的乙個旋轉,該陣列的最小值為1。

迭代式:

class

solution

return a[l];}

};

遞迴式:

class

solution

intfind

(vector<

int>

& a,

int l,

int r)

};

Leetcode刷題筆記 查詢

給定乙個被翻轉的整型公升序陣列nums,陣列中無重複元素,如 4,5,6,7,0,1,2 和乙個整數target。要求在被翻轉過的陣列中找到target的位置,若不存在,則返回 1。並且演算法的時間複雜度要求為o log n 如果是有序陣列,則使用二分查詢就可以將複雜度控制在o log n 了。所以...

演算法筆記 刷題2 5

b 習題6 5 陣列元素逆置 c 習題6 6 楊輝三角 d 習題6 12 解密 e 習題6 13 字串比較 f 例題6 1 逆序輸出陣列元素 b 習題6 5 陣列元素逆置 g 例題6 2 陣列求解fibonacci數列問題 h 例題6 3 氣泡排序 i 例題6 4 矩陣轉置 j 例題6 9 字串求最...

演算法筆記 刷題2 6

b 習題7 7 複製字串中的母音字母 寫乙個函式將乙個字串按反序存放。在主函式中輸入乙個字串,通過呼叫該函式,得到該字串按反序存放後的字串,並輸出。一行字串。輸入字串反序存放後的字串。單獨佔一行。abcddcbastrlen s1 計算s1字串內的字元數 包括 0 include include i...