查看: 1712| 回复: 1
跳转到指定楼层
上一主题 下一主题
收起左侧

攒点经验,发个g店面常见题

🔗
nano | 只看该作者 |倒序浏览
全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
题目来自
http://www.mitbbs.com/article_t1/JobHunting/32575573_32575627_1.html

我写的版本稍有不同,保证a0>=a1<=a2>=a3 and so on

假设一开始保证a0>=a1, 考虑a2的时候,可能有
1) case 1: a2<a1
2) case 2: a2>=a1 and a2<a0
3) case 3: a2>=a0

case 2 and 3 无所谓,case 1的话只需考虑swap a1, a2,就可以满足条件了,依次类推,只需在不满足的时候swap尾端的两个值,不是很理解原Po主说不让swap

code 如下

#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;

void sortWave(int A[], int n)
//this function sort the array in the following way
// e.g., A={1,2,3,4,5,6}
//       ->{2,1,4,3,6,5}

{
        if(n<=1)
        return;
       
        if(A[0]<A[1])
                swap(A[0],A[1]);
       
        bool flag=true;
       
        for(int i=2;i<n;i++)
        {
                if((flag && A[i-1]>A[i])||(!flag && A[i-1]<A[i]))
                swap(A[i-1],A[i]);
               
                flag=!flag;
        }
       
        cout<<endl;
}

bool testWaveSort(int A[], int n)
{
        sortWave(A,n);
        bool flag=true;
        for(int i=1;i<n;i++)
        {
                if((flag && A[i-1]<A[i])||(!flag && A[i-1]>A[i]))
                return false;
               
                flag=!flag;
        }
        return true;
}
int main() {
        // your code goes here
        int A[0];
        if(testWaveSort(A,0))
        cout<<"test 0 succeed"<<endl;
        else
        cout<<"test 0 failed"<<endl;
       
        for(int i=0;i<500;i++)
        {
                int n=rand()%10;
                //cout<<n<<endl;
                int B[n];
                for(int j=0;j<n;j++)
                {
                B[j]=rand()%100;
                //cout<<B[j]<<" ";
                }
                //cout<<endl;
               
                if(testWaveSort(B,n))
                cout<<"test "<<i<<" succeed"<<endl;
                else
                {
                        cout<<"test "<<i<<" failed"<<endl;
                        for(int j=0;j<n;j++)
                        cout<<B[j]<<" ";
                }
        }
        return 0;
}


发帖赚点经验

评分

参与人数 1大米 +3 收起 理由
myway2012 + 3 感谢分享!

查看全部评分


上一篇:&lt;T extends Comparable&lt;T&gt;&gt;是啥意思啊?
下一篇:字符串的全排列,用递归,没看懂,思路和题目都在这儿,求解答
🔗
Soviet 2014-10-23 04:14:53 | 只看该作者
全局:
面试前一天晚上才看到,今天面谷歌就遇上了,谢楼主
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表