每日编程中遇到任何疑问、意见、建议请公众号留言或直接撩Q474356284(备注每日编程)

今日问题:2018年408应用题41题

给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。例如,数组{-5, 3, 2, 3}中未出现的最小正整数是1;数组{1, 2, 3}中未出现的最小正整数是4。要求:

(1)给出算法的基本设计思想。

(2)根据设计思想,采用C或者C++语言描述算法,关键之处给出注释。

(3)说明你所设计算法的时间复杂度和空间复杂度。


解决方法:

(1)算法思想:

设要查找的数组中未出现的最小正整数为K。K的取值范围只能是【1,n+1】。采用类似计数排序的思想,分配一个数组B[n],用来标记A中是否出现了1~n之间的正整数。

从左至右依次扫描数组元素A[i]并标记数组B。若A[i]是负数、零或是大于n,则忽略该值;否则,根据计数排序的思想将B[A[i] - 1]置为1。

标记完毕,遍历数组B,查找第一个值为0的元素,其下标+1即为目标元素K;找不到0时,K = n + 1。

(2)算法实现:

C代码:

(3)以上算法的时空复杂度都是O(n)


明日题目预告:

2017年408应用题41题

请设计一个算法,将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的计算次序)并输出。例如,当下列两颗表达式树作为算法的输入时:

输出的等价中缀表达式分别为(a+b)*(c*(-d))和(a*b)+(-(c-d))。

二叉树结点定义如下:

要求:

(1)给出算法的基本设计思想。

(2)根据设计思想,采用C或者C++语言描述算法,关键之处给出注释。

二叉树的应用 表达式处理_【每日编程208期】2018年408应用题41题相关推荐

  1. strstr函数_【每日编程176期】实现strStr() II

    每日编程中遇到任何疑问.意见.建议请公众号留言或直接撩Q474356284(备注每日编程) 今日问题: 实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串, ...

  2. 编程判断某个数为素数_【每日编程233期】素数对猜想

    1007 素数对猜想 每日编程中遇到任何疑问.意见.建议请公众号留言或直接撩Q474356284(备注每日编程) 让我们定义d为:d=p−p,其中p是第i个素数.显然有d=1,且对于n>1有d是 ...

  3. 字符串型的数字相加减_【每日编程158期】罗马数字转整数

    每日编程中遇到任何疑问.意见.建议请公众号留言或直接撩Q474356284(备注每日编程) 今日问题: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 ...

  4. 最长回文子串_【每日编程142期】最长回文子串II

    每日编程中遇到任何疑问.意见.建议请公众号留言或直接撩Q474356284(备注每日编程) 今日问题: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000. 示例 1 ...

  5. 用递归计算一个数字每一位相加的结果。_【每日编程196期】各位相加III

    每日编程中遇到任何疑问.意见.建议请公众号留言或直接撩Q474356284(备注每日编程) 今日问题: 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入:38 输出 ...

  6. java编程两个超长正整数相减_【每日编程237期】数字分类

    1012 数字分类 每日编程中遇到任何疑问.意见.建议请公众号留言或直接撩Q474356284(备注每日编程) 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1 = 能被 5 ...

  7. 二叉树层次遍历c语言_每日一道 LeetCode (23):二叉树的层次遍历 II

    ❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...

  8. postgresql 遍历字符串数组_每日一道编程题(348):1005.K次取反后最大化的数组和...

    1005.K次取反后最大化的数组和 每日编程中遇到任何疑问.意见.建议请公众号留言或直接撩Q474356284(备注每日编程) 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引  ...

  9. 前端_网页编程 Form表单与模板引擎(中)

    目录 ... ... (续上篇) 四.模板引擎的基本概念 1.定义 2. 优点 五.art-template模板引擎 1.art-template模板引擎介绍 2. art-template的安装 3 ...

最新文章

  1. php跨域访问java,案例:PHP Ajax 跨域最佳解决方案
  2. sendmail邮件服务器配置
  3. 根据”so劫持”过360加固详细分析
  4. Android开发之RecyclerView之刷新数据notifyDataSetChanged失败的问题
  5. LintCode 1683. 杀怪兽(队列)
  6. java oracle sql 参数_oracle pl/sql之在java中调用带有输入输出参数的oracle存储过程...
  7. MySql 复习SQL基础
  8. mysql select效率_Mysql优化之selectcount效率_MySQL
  9. Redhat注册方法
  10. 北航计算机学院考研英语一还是二,2020北京航空航天大学计算机考研考试科目知多少?...
  11. python菜单栏不见了如何恢复_解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
  12. 2018年世界计算机超算大赛,2018ASC世界大学生超算竞赛开赛:11队齐破赛会纪录...
  13. MATLAB绘制开环单位阶跃响应,MATLAB语言与控制系统仿真-参考 答案-第5章.doc
  14. html5新增的标签是什么,HTML5新增标签及含义解释
  15. 国风就是帅,会三板吗,看看新天吧
  16. 华为视频显示服务器异常,给予用户一份贴心|(数十份案例)APP异常界面与Toast产品设计落地...
  17. 特殊的数独身数,:水仙花数, 四叶玫瑰数, 五角星数, 六合数 ,北斗七星数, 八仙数, 九九重阳数 ,十全十美数...
  18. linux 设置用户有效天数,Linux用户管理:设置用户口令的使用期限
  19. 学习百度Apollo中的决策规划
  20. C++练习:编写程序实现歌唱大赛选手成绩计算功能

热门文章

  1. 手机辐射到底有多厉害!65分钟将生鸡蛋煮熟
  2. 点广告才可以下载的代码
  3. 抖音音乐品牌升级 推出“炙热星河”音乐人服务平台
  4. 雷军再失猛将!小米12号创始员工离职 曾一起喝粥创立小米
  5. 微信支持导出头像、手机号等个人信息!网友:这就是微信的“个人简历”?...
  6. 10万辅导老师困境:上半年被抢,下半年被裁
  7. 马斯克自曝曾寻求苹果600亿美元收购特斯拉 但库克拒绝会面
  8. 飞书上线“程序员友好”功能 迎接1024程序员节
  9. 苏宁易购:双11大促提前启动 将追加投入50亿补贴
  10. 跑山么、后浪们?2.0T+237匹大马力后驱CT4山路试驾体验