【劍指offer】旋轉陣列的最小值
轉載請註明出處:http://blog.csdn.net/ns_code/article/details/25335043
現在對演算法真的是由衷地熱愛啊,總是忍不住想要A題(本科都沒這意識,哎,把時間都浪費在了考試拿獎學金和所謂的學生工作上了),而且數學一直以來都是自己的強項,希望在這方面以後能應用好,雖然在ACM方面還只是個小學生,以後即使工作了,也要把ACM堅持下去,無關乎工作,只關乎興趣。
依然是劍指offer上的題目,第8題,在九度OJ上測試通過。
時間限制:1 秒
記憶體限制:32 兆
- 題目描述:
把一個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入一個遞增排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的最小值為1。
- 輸入:
輸入可能包含多個測試樣例,對於每個測試案例,
輸入的第一行為一個整數n(1<= n<=1000000):代表旋轉陣列的元素個數。
輸入的第二行包括n個整數,其中每個整數a的範圍是(1<=a<=10000000)。
- 輸出:
對應每個測試案例,
輸出旋轉陣列中最小的元素。
- 樣例輸入:
53 4 5 1 2
- 樣例輸出:
1
AC程式碼:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
int *A = (int *)malloc(n*sizeof(int));
if(A == NULL)
exit(EXIT_FAILURE);
int i;
for(i=0;i<n;i++)
scanf("%d",A+i);
int p1 = 0;
int p2 = n-1;
int mid = p1;
while(A[p1] >= A[p2])
{
if(p2-p1 == 1)
{
mid = p2;
break;
}
mid = (p1+p2)/2;
//特殊情況,只能順序查詢
if(A[p1]==A[mid] && A[p2]==A[mid])
{
mid = p1;
int i;
for(i=p1+1;i<=p2;i++)
{
if(A[mid] > A[i])
mid = i;
}
break;
}
if(A[mid]>=A[p1])
p1 = mid;
else if(A[mid]<=A[p2])
p2 = mid;
}
printf("%d\n",A[mid]);
free(A);
A = 0;
}
return 0;
}
/**************************************************************
Problem: 1386
User: mmc_maodun
Language: C
Result: Accepted
Time:700 ms
Memory:4820 kb
****************************************************************/
相關文章
- 劍指offer:旋轉陣列的最小數字陣列
- 劍指offer 旋轉陣列的最小數字陣列
- 【劍指offer】7.旋轉陣列的最小數字陣列
- 【劍指 Offer】11. 旋轉陣列的最小數字陣列
- 劍指 Offer 11. 旋轉陣列的最小數字陣列
- (python版)《劍指Offer》JZ06:旋轉陣列的最小數字Python陣列
- 劍指offer-轉陣列的最小數字-php陣列PHP
- 劍指 offer(1) -- 陣列篇陣列
- 劍指offer面試題11:旋轉陣列的最小數字(Java版已在牛客網AC)面試題陣列Java
- 0二分查詢簡單 牛客NC.71旋轉陣列的最小數字 leetcode劍指 Offer 11. 旋轉陣列的最小數字陣列LeetCode
- 劍指offer之順序列印陣列陣列
- 【劍指offer】二維陣列中的查詢陣列
- 153. 尋找旋轉排序陣列中的最小值排序陣列
- 劍指Offer-37-陣列中逆序對陣列
- 劍指Offer--陣列中重複的數字陣列
- 【劍指offer】【1】二維陣列中的查詢陣列
- 劍指Offer-34-把陣列排成最小的數陣列
- 劍指offer——陣列中的逆序對C++(75%)陣列C++
- 劍指offer——把陣列排成最小的數C++陣列C++
- 153. 尋找旋轉排序陣列中的最小值(中)排序陣列
- LeetCode-153-尋找旋轉排序陣列中的最小值LeetCode排序陣列
- 【LeetCode】153. 尋找旋轉排序陣列中的最小值LeetCode排序陣列
- 二維陣列中的查詢——牛客劍指offer陣列
- nowcoder-劍指offer-二維陣列的查詢陣列
- 劍指 Offer 04. 二維陣列中的查詢陣列
- 劍指Offer-連續子陣列中的最大和陣列
- 劍指 Offer 42.連續子陣列的最大和陣列
- 劍指 offer 第一題: 二維陣列中的查詢陣列
- Leetcode 劍指 Offer 03. 陣列中重複的數字LeetCode陣列
- 劍指offer-例題 連續子陣列的最大和陣列
- 《劍指Offer》- 連續子陣列的最大和或最小和陣列
- 力扣 - 劍指 Offer 45. 把陣列排成最小的數力扣陣列
- 1. 二位陣列中的查詢(劍指offer)陣列
- 力扣 - 劍指 Offer 66. 構建乘積陣列力扣陣列
- 劍指offer之列印超過陣列一半的數字陣列
- 劍指Offer-把陣列中的數排成一個最小的數陣列
- 《劍指 Offer》棧實現佇列佇列
- LeetCode 189 旋轉陣列LeetCode陣列
- 劍指Offer-39-數字在排序陣列中出現的次數排序陣列