在遞增數(shù)組中找一個(gè)數(shù)字

讓人瑟瑟發(fā)抖的面試題

。
。

創(chuàng)新互聯(lián)專(zhuān)注于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站開(kāi)發(fā)。公司秉持“客戶(hù)至上,用心服務(wù)”的宗旨,從客戶(hù)的利益和觀(guān)點(diǎn)出發(fā),讓客戶(hù)在網(wǎng)絡(luò)營(yíng)銷(xiāo)中找到自己的駐足之地。尊重和關(guān)懷每一位客戶(hù),用嚴(yán)謹(jǐn)?shù)膽B(tài)度對(duì)待客戶(hù),用專(zhuān)業(yè)的服務(wù)創(chuàng)造價(jià)值,成為客戶(hù)值得信賴(lài)的朋友,為客戶(hù)解除后顧之憂(yōu)。

來(lái)我們看一下題目
在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序操作。每一列都按照從上到下遞增的順序排序。完成代碼,輸入這樣一個(gè)二維數(shù)組和一個(gè)整數(shù),判斷數(shù)組是否含有該整數(shù)

怎么解決勒???
分析:在遞增數(shù)組中找一個(gè)數(shù)字如果二維數(shù)組是這樣,為了解決問(wèn)題完全可以把數(shù)組遍歷一遍,但是為了效率,我們需要把時(shí)間復(fù)雜度降低,為了遍歷最少的數(shù)字,我們需要把行和列分開(kāi)。所以,我們會(huì)從數(shù)組中找一個(gè)數(shù)字進(jìn)行判斷,然而,隨便找一個(gè)數(shù)字,只會(huì)讓問(wèn)題變的跟復(fù)雜,比如,找一個(gè)10,左邊和上邊都比10小,而下邊和右邊都比10大,所以,我們只能找一些特殊點(diǎn),比如,右上邊,左下邊,只會(huì)有一條路讓你選擇。a[row][col],我們拿9舉例,若所找數(shù)字比9大,只需row++;若所找數(shù)字比9小,只需col--;直到最后找到所需數(shù)字。
來(lái)看看代碼

#include<iostream>
using namespace std;

bool find(int *arr, int row, int col, int n)
{
    bool flag = false;//標(biāo)記
    if (arr != nullptr&&row > 0 && col > 0)//判斷數(shù)組是否存在
    {
        int _row = 0;
        int _col = col - 1;
        while (_col>0&&_row<row)
        {
            if (arr[_row*col + _col] > n)
            {
                _col--;
            }
            else if (arr[_row*col + _col] < n)
            {
                _row++;
            }
            else
            {
                flag = true;
                return flag;
            }
        }
    }
    return flag;
}
int main()
{
    int arr[4][4] = { { 1, 2, 8, 9 }, { 2, 4, 9, 12 }, { 4, 7, 10, 13 }, { 6, 8, 11, 15 } };
    bool ret=find((int *)arr, 4, 4, 7);//
    cout << boolalpha << ret<<endl;//boolapha使返回值變成true輸出
    return 0;
}

名稱(chēng)欄目:在遞增數(shù)組中找一個(gè)數(shù)字
文章來(lái)源:http://muchs.cn/article40/ijoseo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、微信公眾號(hào)App設(shè)計(jì)、ChatGPT品牌網(wǎng)站建設(shè)、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)