一、把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。 note:給出的所有元素都大於0,若陣列大小為0,請返回0。
方法一:o(n)
public int minnumberinrotatearray(int array)
return array[0];
}
方法二:o(logn)
public int rotate(int array)
}return array[low];
}
二、給出兩個有序陣列,求有序陣列中出現的共同數字的個數
方法一:暴力求解,遍歷a陣列每乙個數字然後在b陣列中遍歷尋找
public int countcommon(int a,int b)
}return cnt;
}
三、統計乙個數字在排序陣列中出現的次數。
用二分查詢的思想尋找第一次和最後一次的下標,時間複雜度o(logn)
public int getnumberofk(int array , int k)
//返回數字k在有序陣列中出現的第一次的下標,不存在返回-1
public int firstindex(int array,int k)
} return -1; }
public int lastindex02(int array,int k)
} return -1;
}
二分查詢及其變形
最基本的二分查詢模版 在有序陣列a中查詢key,如果找到,返回位置索引,否則,返回 1 int binarysearch int a,int n,int key else if a mid key else return 1 變種1 如果a有多個key元素,返回最大的,否則,返回 1 int bin...
變形二分查詢
title 資料結構與演算法 專案 主題 二分查詢 description 分析 1 查詢的是乙個有序的資料集合 2 每次查詢都是與區間的中間元素進行對比,將待查詢的區間縮小為之前的一半,直到找到要查詢的元素,或者區間被縮小為0 date 2021 version 0.1版本 author coff...
二分搜尋及其變形討論
最近刷leetcode的時候遇到了不少二分查詢的題,二分查詢是非常高效的查詢策略,但是有乙個前提就是陣列必須是有序的。1.對於標準的二分搜尋,針對的是沒有重複元素的有序陣列,每個元素只出現一次。標準的二分搜尋的 很簡潔,對於程式設計師來講最好會背 int std binary search int ...