int A[nSize],当中隐藏着若干0,其余非0整数。写一个函数int Func(int* A, int nSize),使A把0移至后面。非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。

尽可能不使用辅助空间且考虑效率及异常问题。凝视规范且给出设计思路

注:我的方法的复杂度为O(n),大家假设有其他方法希望能够交流一下。

/*
    Blog:
        http://blog.csdn.net/jiangxinnju
   
*/
#include <iostream>
#include <random>

using namespace std;

#define ARRAYSZIE 100
int Func(int* A,int nSize)
{
    int *p_zero = A; //指向最開始的零值
    int *p_unzero = A; //指向最后的非零值
    while(1)
    {
        for(int i=(p_zero-A); i<nSize; i++)
        {
            if(A[i] == 0) //找到第一个零值
            {
                p_zero = &A[i];
                break;
            }
            if(i == nSize-1) //没有找到零值。说明所有为非零值
            {
                return -1;
            }
        }

for(int i=(p_zero-A+1); i<nSize; i++)
        {
            if(A[i] != 0) //找到零值之后的第一个非零值
            {
                p_unzero = &A[i];
                break;
            }
            if(i == nSize-1) //没有找到下一个非零值,说明所有为零值,或者已经排序完成
            {
                return (p_zero-A);
            }
        }

*p_zero = *p_unzero;
        *p_unzero = 0;
        p_zero++;
    }
}
void test_exercise001()
{
    int A[ARRAYSZIE];
    default_random_engine e;
    uniform_int_distribution<> d(0,1);
    for(int i=0; i<ARRAYSZIE; i++)
    {
        A[i] = d(e); //随机产生0和1值
    }
    for(int i=0; i<ARRAYSZIE; i++)
    {
        cout << A[i] << " ";
    }
    cout << "\nThe position of the first zero is: " << Func(A,ARRAYSZIE) << endl;
    for(int i=0; i<ARRAYSZIE; i++)
    {
        cout << A[i] << " ";
    }
}

华为面试题——一道关于指针方面的编程题(C/C++)相关推荐

  1. 华为机试题python版节选(基础编程题)

    前言 自学python之后,可以借助这些企业招聘时的机考题目来锤炼一下实践能力.. 每道题含要点解析,是按照自己理解梳理的,多个答案的是结合自己的答案+网上的答案,不一定很严谨,请读者自行在编译器中调 ...

  2. 算法面试题-美团点评2016研发工程师编程题(二)-字符编码(哈夫曼树)

    题目: 解析:这个题目的关键问题是"最短的编码",这里可以知道应该是Huffman编码了. 哈夫曼编码是一种可变字长编码,也就是说对于不同的字符的编码不是定长的,所以才能比定长编码 ...

  3. python字典程序题_急!一道关于python字典的编程题!求思路!

    作业要求做一个python程序导入一个文本文件(importsys,file_in=open(sys.argv[1],'r'))那个文本文件里都是AnimalId:Timestamp:StationI ...

  4. 2018深信服java笔试题,深信服2018秋招编程题

    深信服2018秋招编程题 深信服2018秋招编程题 第一题: 其中,reverse函数的代码实现如下: 1. unsigned int reverse(unsigned int num) { unsi ...

  5. 一道ACM剑气算法的编程题

    无剑无我 Problem Description: 北宋末年,奸臣当道,宦官掌权,外侮日亟,辽军再犯.时下战火连连,烽烟四起,哀鸿遍野,民不聊生,又有众多能人异士群起而反,天下志士云集响应,景粮影从. ...

  6. 网易python笔试题_2017秋季网易校园招聘编程题和个人解答(python)

    做菜 题干 大牛喜欢做菜,每种菜需要不同的材料,求需要准备多少种材料. 每一行是一个菜谱,<50字节,输入行数不确定,不超过50行. 难点:如何获取输入结束的标志 输入示例 apple bana ...

  7. 一道经典的Java多线程编程题

    问题描述 启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. 接着再由线程1打印16,17,18,1 ...

  8. 京东android面试题2019,京东2019春招编程题参考代码

    数内排序 分析 字符串读入,逆序排序即可. 时间复杂度 O(len(x)*log(len(x))) 参考代码 #include using namespace std; int main() { st ...

  9. 华为秋招机试三道编程题(2021-09-01)

    通知:华为.阿里最新的秋招笔试编程题题目.思路以及参考代码已经全部整理好放在微信公众号[TechGuide]了,私信公众号回复[华为]或者[阿里]即可获得最实时.最详细的笔试题解啦! 通知:华为.阿里 ...

最新文章

  1. 任天堂经典拳击游戏可以体感操作了,打开网页就能玩,击败泰森不是梦
  2. DHCP_SNOOPING_ DAI_IPSG实验
  3. 微信公众号 文章的爬虫系统
  4. 扫地机器人返充原理_扫地机器人全解析
  5. 把用户输入的文本转义(主要针对特殊符号和emoji表情)
  6. perf script 执行时间_在Python中准确地测量代码执行时间
  7. 使用Adobe Acrobat为PDF文件添加图章(仅图片)
  8. 【气动学】基于matlab GUI外弹道仿真系统【含Matlab源码 1044期】
  9. python爬取美女_Python制作爬虫抓取美女图
  10. 固态硬盘母盘制作 linux,网维大师母盘制作教程
  11. ArcGIS动态表格扩展模块Mapping and Charting Solutions使用教程及下载地址
  12. 产品读书《粉丝经济:传统企业转型互联网的突破口》
  13. 在虚拟机里通过U盘引导安装Win10教程
  14. docker 访问宿主机网络
  15. shuipfcms二次开发之图片上传
  16. Nessus 安装文件和详细教程(kali系统,附网盘下载链接)
  17. 解决Windows找不到steam_api.dll文件
  18. 双alpha可以结合吗_推文简评《和我的Alpha一起待产》:这本双A甜文有点意思
  19. 有没有讲python模块的书_python - 模块,包
  20. 最新postfix 的master.cf配置参考

热门文章

  1. python有道翻译接口-【Python】Python利用有道翻译开发API应用示例
  2. python编程入门指南 代码库在哪下-致Python初学者 Anaconda入门使用指南完整版
  3. python语言实例-Python语言实现百度语音识别API的使用实例
  4. 自学python可以找到好的工作吗-27岁0基础自学Python,多久可以找到工作?
  5. python开发需要掌握哪些知识-Python的8个基础知识点,新手必须背下来!
  6. 在Ubuntu上通过VNC Viewer连接Jetson nano桌面
  7. usaco Arithmetic Progressions
  8. HDU1715 大菲波数(大数相加)(Java题解)
  9. cad 关键字被保留了?选择集关键字保留了? N S W E关键字无法用?
  10. ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze 最短路+分层图