【九度OJ1386】|【劍指offer8】旋轉數組的最小數字

題目描述:

把一個數組最開始的若干個元素搬到數組的末尾,咱們稱之爲數組的旋轉。輸入一個遞增排序的數組的一個旋轉,輸出旋轉數組的最小元素。例如數組{3,4,5,1,2}爲{1,2,3,4,5}的一個旋轉,該數組的最小值爲1。 java

輸入:

輸入可能包含多個測試樣例,對於每一個測試案例, 數組

輸入的第一行爲一個整數n(1<= n<=1000000):表明旋轉數組的元素個數。 測試

輸入的第二行包括n個整數,其中每一個整數a的範圍是(1<=a<=10000000)。 spa

輸出:

對應每一個測試案例, code

輸出旋轉數組中最小的元素。 排序

解:很簡單的一道題但提交後前兩個老是也不能經過,後來才發現有兩種狀況須要額外注意一下: it

  1. 輸入的是所有相同的數
  2. 輸入的是沒有變換順序的數組
    即數組的第一位已是最小的了,再跟後面的比較沒法取得更小的數,從而致使錯誤
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.StreamTokenizer;
    
    /**
     * 旋轉數組的最小數字
     * @author aqia358
     *
     */
    public class Main {
    
    	public static void main(String[] args) throws IOException {
    		StreamTokenizer st = new StreamTokenizer(new BufferedReader(
    				new InputStreamReader(System.in)));
    		while (st.nextToken() != st.TT_EOF) {
    			int n = (int) st.nval;
    			int count = 0;
    			int[] a = new int[n];
    			boolean flag = false;
    				while (count < n) {
    					st.nextToken();
    					a[count] = (int) st.nval;
    					if (count >= 1) {
    						if (a[count] < a[count - 1]) {
    							flag = true;
    							System.out.println(a[count]);
    						}
    					}
    					count++;
    				}
    				if(!flag)
    					System.out.println(a[0]);
    		}
    	}
    
    }
相關文章
相關標籤/搜索