做完华为的模拟机考题,趁着还记得题目记录下来。

问题描述是,给定一个乱序存放着[0, n)的数组,提供一个swap_with_zero(int* array, int len, int n)函数,该函数可以交换数组中n和0的位置。要求调用这个函数完成数组排序(默认应该是升序)。

比较坑的一点是刚开始没看到void swap_with_zero(int* array, int len, int n)前面还有一个extern关键字,还自己把这个函数实现了,白白浪费时间 ......

实际上这题就是一个交换排序,如果知道的同学一下就做完了,像我这种算法渣渣还得思考那么几十分钟 0 _0

而且自己在IDE上实现的交换函数明明可以跑出正确结果,但是放到OJ跑出来的却是奇奇怪怪的结果...最后还是得根据报错修改函数。

废话不多说,代码如下:

#include <iostream>using namespace std;/*** 交换数组里n和0的位置* array: 存储[0-n)的数组* len: 数组长度* n: 数组里要和0交换的数*/
extern void swap_with_zero(int* array, int len, int n){for(int i = 0; i < len; i++){int z_ind = 0;int n_ind = 0;int temp = 0;if(array[i] == n){n_ind = i;}else if(array[i] == 0){z_ind = i;}temp = array[n_ind];array[n_ind] = array[z_ind];array[z_ind] = temp;}
}class Solution {
public:/*** 调用方法swap_with_zero来对array进行排序*/void sort(int* array, int len) {if(len <= 1)return;//将0交换到未排序序列的最低位for(int i = 0; i < len; i++){swap_with_zero(array, len, array[i]);int Min = len;for(int j = i + 1; j < len; j++){if(array[j] <= Min)Min = array[j];}swap_with_zero(array, len, Min);}}
};int main()
{int array[7] = {1, 4, 5, 2, 0, 3, 6};Solution ans;ans.sort(array, 7);for(int i = 0; i < 7; i++){cout << array[i] << " ";}
}

然而这个sort函数放到OJ上跑0到9的乱序数组竟然会输出0到10,非常神奇,于是将Min改成了array[len - 1],结果输出1,2,3,4,5,6,7,8,9,0,于是又在末尾添加了一个将0交换到最低位的循环,这才通过测试......估计200分的题只能拿120左右了 #° 皿°)

迫切地想知道后台的swap_with_zero函数的具体实现......

2017华为实习生招聘机考模拟题——0交换排序相关推荐

  1. 2015华为实习生招聘机试题长沙站

    5月21日中午接到了华为实习生招聘机试的短信通知,早上8:50要赶去湖南大学,虽然并不远,但还是很累有木有.差一点就不想去了,还好后来抱着学习的态度还是过去了.到了湖大信息院之后很快搞清楚了状况,原来 ...

  2. winmail计算机三级,2016年计算机三级网络技术机考模拟题(1)

    1.Winmail用户使用0utlook发送邮件时,使用协议是( ). A.HTTP B.IMAP C.POP3 D.SMTP 2.子网掩码为255.128.0.0,该掩码又可以写为( ). A./8 ...

  3. 2017年计算机自主招生试题,2017年自主招生机考模拟题

    2017年自主招生机考模拟题 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 2017年自主招生机考模拟试题---3说明:1. 本 ...

  4. 2014华为实习生招聘机试题

    由于本人只做出两道题,第三题没来得及细看,所以只列出前两道题目及其解法(C语言),仅供参考. 1.输入一个字符串(由小写字母组成,长度不超过1000),输出为对应的数字字符串.(60分) 样例: 输入 ...

  5. 2015华为实习生招聘机试、面试记录

    由于是内推所以机试和面试的时间比较早,总的来说,不是太难. 3月27日(周五上午)去华为南研所进行了机试,3道编程题,都是比较基础的,第三题也是不难的.第一题:给出一个字符串,比如ahda34ahe8 ...

  6. 2017华为实习生招聘面试经历(IT应用软件 c++)

    由于我有华为软件精英挑战赛绿卡,所以直接二面., 1,问了华为软件精英挑战赛的情况,自己的角色. 2,说一次自己印象比较深刻的项目. 3,问自己有没有遇到什么困难,压力. 4,对华为有什么了解 5,除 ...

  7. 华东师范大学 2017 计算机系暑期夏令营机考

    华东师范大学 2017 计算机系暑期夏令营机考 传送门:https://acm.ecnu.edu.cn/problem/list/?source=2017 计算机系暑期夏令营机考 中文题不写题面了 我 ...

  8. 【华为OD机试模拟题】用 C++ 实现 - 英文输入法单词联想 or 英文输入法(2023.Q1)

    最近更新的博客 [华为OD机试模拟题]用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客 使用说明 英文输入法单词联想 and 英文输入法 题目 输入 输出 示例一 输入 ...

  9. 华为机考1-54题总结

    华为笔试面试机考在线练习,欢迎练习并在讨论区交流题解与想法. 华为机试 质数因子 题目描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 ...

最新文章

  1. Rootkit之SSDT hook(通过CR0)
  2. 怎样更新jar包中的某个class文件??
  3. IOS 关于NSString类型的属性为什么有时用copy,有时用strong呢?
  4. [PAT乙级]1032 挖掘机技术哪家强
  5. java写一个99到0_Java中一个普通的循环为何从10开始到99连续相乘会得到0?
  6. selenium(java)遇到的问题
  7. MTK 驱动(49)---TP测试规范
  8. oracle数据库监听频道异常,数据库监听不定期出现异常故障处理
  9. 图像类似度測量与模板匹配总结
  10. BOMRemover v2.0 去除代码中的UTF-8 BOM
  11. delphi教程 | 第一个程序
  12. U盘exe病毒解决方案
  13. 使用jQuery Easyui 制作的后台界面
  14. 2750 心系南方灾区
  15. 【侯捷】C++STL标准库与泛型编程(第二讲)
  16. 计算机课平时成绩重要吗,离散数学课程平时成绩评定方法的探索与研究
  17. 面试-Senior Specialist for Devops-车企
  18. 软件开发工期估算系列(5)——規模見積もりの王様「LOC見積もり」 ~見積もりの基本技法 その2
  19. 成功解决ERROR: Could not build wheels for bottleneck, which is required to install pyproject.toml-based
  20. qt connecttohost 无法连上另一台电脑_扬州索尼电脑检测维修app_曹操闪修

热门文章

  1. Dreamweaver CS4 解决序列号过期问题 OS XP
  2. 详解not in与not exists的区别与用法(not in的性能并不差)
  3. 我犯了一个非常基础的错误:在对List的循环中改变了List
  4. 北京移动宽带光猫 GM219-S 路由功能分离内置路由器改接外置路由器
  5. 大数据开发hive数据库常用命令汇总
  6. 关于自我的剖析 —— 认知(面试:你的缺点是什么)
  7. 如何搭建自己的cdn
  8. 【学习笔记】ARM Cortex-A(armv7)编程手册
  9. 测试开发系列之——css
  10. 非安装版mysql安装