zoukankan      html  css  js  c++  java
  • 剑指offer题目练习一

               看见了一道二维数组找数的题,已排好序的数组(从左至右从上到下,都是由小变大的)让找数,瞬间就出思路了,并没有必要去看他的解释,两次二分就搞定了。

         

    #include<cstdio>
    #include<iostream>
    
    using namespace std;
    void sreach(int num[][100], int row, int line, int goal)
    {
        int i=0,j=row-1,mid;
        while((j-i)>1)
        {
            mid=(i+j)/2;
            if(num[mid][0]>goal) j=mid;
            else i=mid;
        }
        int a,b;
        a = goal>=num[j][0] ? j : i;
        i=0,j=line-1;
        while((j-i)>1)
        {
            mid=(i+j)/2;
            if(num[a][mid]>goal) j=mid;
            else i=mid;
        }
    
    

    if(num[a][b]!=goal){
    cout<<"not found!"<<endl;
    }

    
    

    else cout<<a<<","<<b<<endl;

    
    }
    int main()
    {
        int n,m;
        int number[100][100];
        while(scanf("%d%d",&m,&n))
        {
            for(int i=0;i<n;i++)
                for(int j=0;j<m;j++)
                scanf("%d",&number[i][j]);
            int x;
            cin>>x;
            sreach(number, n, m, x);
        }
        return 0;
    }
    /*
    6 6
    1 2 3 4 5 6
    10 12 15 16 18 21
    22 23 26 27 29 30
    32 33 34 35 36 37
    40 41 43 44 47 50
    50 51 55 56 57 58
    5 5
    1 2 3 4 5
    10 12 15 16 18
    22 23 26 27 29
    32 33 34 35 36
    40 41 43 44 47
    */

    还有一道插入字符串,把空格都换成%D%,直接链表搞定,不让用链表就用JAVA的linkedlist写。一个函数就够了。

    #include<cstdio>
    #include<iostream>
    
    using namespace std;
    
    struct node
    {
        char data;
        node *next;
    }*root;   // 指针没有盘空
    void setuplist(char s[])
    {
        node *temp,*n;
        n=root;
        int i=0;
        while(s[i]!='')
        {
            temp = new node;
            temp->next=NULL;
            temp->data=s[i];
            n->next=temp;
            n=temp;
            i++;
        }
    }
    void insertwords()
    {
        node *n;
        node *temp1,*temp2;
        n=root->next;
        while(n->next)
        {
            if(n->data==' ')
            {
                n->data='%';
                temp1 = new node;
                temp1->data = 'd';
                temp2 = new node;
                temp2->data = '%';
                temp1->next=temp2;
                temp2->next=n->next;
                n->next=temp1;
            }
            else n=n->next;
        }
    }
    void del(node *n)
    {
        if(n->next) del(n->next);
        delete n;
    }
    int main()
    {
        char s[100];
        while(gets(s))
        {
            root = new node;
            root->next = NULL;
            setuplist(s);
            insertwords();
            node *t=root->next;
            while(t->next)
            {
                cout<<t->data;
                t=t->next;
            }
            cout<<endl;
            del(root);
        }
    }
  • 相关阅读:
    在Fedora 20下使用TexturePacker
    实战微信JS SDK开发:贺卡制作与播放(1)
    Fedora 20下安装Google PinYin输入法
    Netty5 时间服务器 有粘包问题
    Netty5入门学习笔记003-TCP粘包/拆包问题的解决之道(下)
    Netty5入门学习笔记002-TCP粘包/拆包问题的解决之道(上)
    11g Rac 添加日志组
    工作中的生长与完善——Leo鉴书86
    搜集直方图repeat和skewonly
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxError Exception
  • 原文地址:https://www.cnblogs.com/liboyan/p/5008433.html
Copyright © 2011-2022 走看看