Ctrip Online

No.1

以前写过
Leetcode 原题 Best time to sell stock

但是输入输出要自己写,然后很蠢的是数字用逗号隔开的,要处理


代码(逗号分割数字)——1

string读入,然后逗号变成空格, 变成stringstream 流,转成字符串,太复杂了

int main()
{
    string strTemp;  
    //int array[4];  
    //int i = 0;  
      vector<int> array;
    stringstream sStream;  

    cin >> strTemp;  
    int pos = strTemp.find(',');  
    while (pos != string::npos)  
    {  
        strTemp = strTemp.replace(pos, 1, 1, ' ');  //将字符串中的','用空格代替  
        pos = strTemp.find(',');  
    }  

    sStream << strTemp;  //将字符串导入的流中  
    while (sStream)  
    {  
        int i_tmp ;
        sStream >> i_tmp;
        array.push_back(i_tmp);  
    }
    cout<< maxProfit(array)<

代码(逗号分割数字)——2

输入n,n*n的数据,然后逗号分隔的,用getchar,获得无关字符

void display(int **a,int n)
{
    for(int i = 0;ifor(int j = 0;jcout<< a[i][j] << " ";
        cout<int main()
{
    int n;
    cin>>n;
    int **a = new int*[n];
    for(int i = 0;iint j = 0;
        a[i] = new int[n];
            for(int j = 0;jscanf("%d",&a[i][j]);
                  getchar();
            }
    }
    display(a,n);
}

c++动态二维数组

java是可以直接new int [size][Column]
但是c++不行
因为

int size=50,Column=50;
int (*p)[Column]=new int [size][Column]

这样的语句,编译器通不过,为什么呢?
首先 new int[size][Column] 就是动态生成时确定的,所以它没有错
那么就是 int(*p)[Column],这句有问题了,这句为什么不对呢, 那是因为,这是一个定义语句,而定义语句先经过编译器进行编译,当编译器运行到此处时,发现Column 不是常数,因此不能通过编译。 而之所以编译器认为Column 不是常数,是因为编译阶段,编译器起的作用是查语法错误,和预分配空间,它并不执行程序,因此,没有执行那个赋值语句(只是对这个语句检查错误,和分配空间),因此编译阶段,它将认为column 是个变量。所以上面的二维数组定义是错误的, 它不能通过编译。
c++二维


 int **p= new int*[size];//定义指针数组 
 for(int i=0;i<size;i++)
 {
   p[i]=new int[Column];
 }
//释放空间哇
for(int i = 0; i<size; i++)
{
    delete[] p[i];
}
 delete[] p;

No.2

二分查找,返回第一次出现位置或者(-1-应该存在的位置)
额,要注意边界条件吧
比如while(low<=high)小于等于
最后的应该位置是high+1或者low

#include
using namespace std;

int binary(int p[],int n,int x)
{
    int low = 0,high = n-1;
    while(low<=high)
    {
        int mid = (low+high)/2;
        if(x1;
        else
            low = mid+1;
    }
    if(low>high)
        return (-1-low);
}

int main()
{
    int x,n;
    cin>>x>>n;
    if(n==0)
    {
       cout<<-1<return 0;
    }
    int * a = new int [n];
    for(int i = 0;icin>>a[i];
        if(a[i]==x)
        {
            cout<return 0;   
        }   
    }

    cout<delete a;
    return 0;
}

你可能感兴趣的:(数据结构)