百度面试题--度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同,度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少?
生活随笔
收集整理的這篇文章主要介紹了
百度面试题--度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同,度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第一種方法:可以使用LIst 進行每次加入時進行判斷是否包含,將重復的數據不再加入List中 最后再找出List中第三便宜的帽子,若list的size小于3輸出-1;
????? 特點:每次加入數據都要進行判斷是否包含,最后也需要排序或者其他方法找出第三便宜。
第二種方法? :將所有的數據保存在一個數組中,對數組進行快排, 遍歷數組后一位是否比前一位大 如果大把代表第幾便宜的標志位進行自增 ,當標志位為3時 輸出第三便宜的帽子 否則輸出-1;
????? 特點:進行一次排序后 再遍歷數組??? 時間復雜度為:? nLog(n) + n =nLog(n).
? ?? 第二種方法java實現源代碼:?
???????????
import java.util.Arrays; import java.util.Scanner;/*** 度度熊想去商場買一頂帽子,商場里有N頂帽子,有些帽子的價格可能相同。* 度度熊想買一頂價格第三便宜的帽子,問第三便宜的帽子價格是多少?* 首先輸入一個正整數N(N <= 50),接下來輸入N個數表示每頂帽子的價格* (價格均是正整數,且小于等于1000)* 如果存在第三便宜的帽子,請輸出這個價格是多少,否則輸出-1* @author Administrator**/ public class SelectHat {public static void main(String[] args) {Scanner scan =new Scanner(System.in);int count =scan.nextInt();int price[] =new int[count];for(int i=0;i<count;i++){price[i]=scan.nextInt();}//快速排序Arrays.sort(price);//代表第幾便宜的帽子int flag=1; //循環for(int i=0;i<count-1;i++){if(price[i]<price[i+1]){flag++;}//找出第三便宜的輸出if(flag==3){System.out.println(price[i+1]);break;}}if(flag!=3){System.out.println(-1);} } }總結
以上是生活随笔為你收集整理的百度面试题--度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同,度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 408计算机组成思维导图(各章节清晰详细
- 下一篇: 世界《模拟电路》四大名著,传说中的圣经,