博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
First Missing Positive && missing number
阅读量:6957 次
发布时间:2019-06-27

本文共 2370 字,大约阅读时间需要 7 分钟。

我原以为数组中不会有重复的数字,所以利用min、max分别记录给定数组中出现的最小正整数和最大正整数{可以求出这之间的所有数值之和sum2=(min+max)*(max-min+1)/2},并且遍历给定数组,将所有正整数求和计入sum1。如果sum1>sum2则,sum1-sum2为中断数字,否则说明【min,max】连续,max+1即为所求。接着处理一些边界条件接好。但,太天真了(不过这种思路对于不含重复元素的数组仍然还是不错的思路),看看这种思路的代码实现:

class Solution {public:    Solution():res(1){    }    int firstMissingPositive(vector
& nums) { if(nums.size()==0) return res; int min=0,max=0; int sum=0; for(int i=0;i
0){ min=max=nums[i]; break; } for(int i=0;i
0){ if(nums[i]
max) max=nums[i]; sum+=nums[i]; } } res=(max-min+1)*(min+max)/2-sum; if(res==0)//说明数字连续,没有中断,缺失最后一个未出来的正整数 res=max+1; if(min!=1) res=1; return res; }private: int res;};
View Code

依旧看看大神的想法:

 只要数组中有1这个元素,那么就会挤走数组中的第一个元素!如果有重复元素的话?(只会交换一次,后面的进行判定并忽略)

class Solution {public:    int firstMissingPositive(vector
& nums) { int i=0; while(i
=1 && nums[i]<=nums.size()) swap(nums[i],nums[nums[i]-1]); else i++; } for(int i=0;i

------------------------------------------------分界线-------------------------------------另一道题--------------------------------------------------

 

Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array.

For example,

Given nums = [0, 1, 3] return 2.

自己最初的思路完全可以应用到这道题中来(3月11下午13:04  新增)

class Solution {public:    Solution():res(1){    }        int missingNumber(vector
& nums) { if(nums.size()==0) return res; int min=0,max=0; int sum=0; for(int i=0;i
=0){ min=max=nums[i]; break; } for(int i=0;i
=0){ if(nums[i]
max) max=nums[i]; sum+=nums[i]; } } res=(max-min+1)*(min+max)/2-sum; if(res==0)//说明数字连续,没有中断,缺失最后一个未出来的正整数 res=max+1; if(min!=0) res=0; return res; }private: int res;};

 

转载于:https://www.cnblogs.com/chess/p/5264912.html

你可能感兴趣的文章
qq强制聊天工具
查看>>
webConfig配置错误页
查看>>
matlab学习笔记
查看>>
《程序员代码面试指南》第五章 字符串问题 回文最少分割数
查看>>
Linux学习总结(4)——Centos6.5使用yum安装mysql——快速上手必备
查看>>
在微软5年,我学到的几个小技能
查看>>
静态类 和 静态构造方法
查看>>
Java实现八大排序之冒泡排序
查看>>
Java正则表达式
查看>>
用js互相调用iframe页面内的js函数
查看>>
DNS开源服务器BIND最小配置详解<转>
查看>>
grub2 windows版安装
查看>>
使用VirtualEnvWrapper隔离python项目的库依赖
查看>>
Bootstrap——优秀的开源前端框架
查看>>
Struts文件上传allowedTypes问题,烦人的“允许上传的文件类型”
查看>>
evaluate-division
查看>>
hdu 2141 Can you find it?
查看>>
html5--3.10 input元素(9)
查看>>
路由器与交换机区别
查看>>
Android菜鸟在路上——Activity生命周期
查看>>