人人校招筆試題

來源:互聯網
上載者:User

                                             ---9月22日,人人校招筆試題

遍曆,時間複雜度為O(N2),很顯然,這種方法沒什麼實際意義,而且題目中說了這個一個有序數組,採用遍曆的方法是你想不出其他解法時的最壞選擇而已!

的,那麼每次移動指向的值較大的指標;

的,那麼每次移動指向的值較小的指標;

#include <stdio.h>#include <stdlib.h>#include <string.h>int Judge(int *a, int len, int x){    int Ascending = 0;//為1表示升序,否則降序    Ascending = a[1] > a[0] ? 1 : 0;    int *CopyA = (int *)malloc(sizeof(int) * len);    memset(CopyA, 0, sizeof(int) * len);    //構建另一數組    int icount = 0;    for(icount = 0; icount < len; icount++)    {        CopyA[icount] = x - a[icount];    }    //比較兩個指標移動的值,這裡用索引代替指標    int i = len - 1, j = 0;    while(i >= 0 && j < len)    {        if(a[i] > CopyA[j])        {            switch(Ascending)            {                case 0: j++; break;//降序                case 1: i--; break;//升序                default:break;            }        }        else if(a[i] == CopyA[j] && i != j)        {            return 1;        }        else        {            switch(Ascending)            {                case 0: i--; break;//降序                case 1: j++; break;//升序                default:break;            }        }    }    return 0;}int main(){    int a[] = {1, 2, 3, 4};    int len = 4;    int x = 8;    switch(Judge(a, len, x))    {        case 0: printf("%d isn't exist!", x);break;        case 1: printf("%d is exist!", x);break;        default : break;    }    return 0;}




這道題目其實我沒有想到十分有效方法,題解參考的編程之美2.3尋找發帖“水王”

,直到數組中的元素全部相同為止,最後剩下的數組相同的元素一定就是這個定值,這裡使用一個計數器cnt,對數組中某個數VeryNum進行計數,通過計數器的加減來找到該定值。

#include <stdio.h>#include <stdlib.h>int find(int *a, int n){    int VeryNum = 0;    int cnt = 0;    int i = 0;    for(i = 0; i < n; i++)    {        if(cnt == 0)        {            VeryNum = a[i];            cnt = 1;        }        else        {            if(a[i] == VeryNum)            {                cnt++;            }            else            {                cnt--;            }        }    }    return VeryNum;}int main(void){    int a[] = {15, 15, 5, 15, 5, 15, 1};    int n = 7;    printf("%d\n", find(a, n));    return 0;}

http://blog.csdn.net/v_july_v/article/details/11921021

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.