First Missing Positive && missing number
https://leetcode.com/problems/first-missing-positive/
我原以为数组中不会有重复的数字,所以利用min、max分别记录给定数组中出现的最小正整数和最大正整数{可以求出这之间的所有数值之和sum2=(min+max)*(max-min+1)/2},并且遍历给定数组,将所有正整数求和计入sum1。如果sum1>sum2则,sum1-sum2为中断数字,否则说明【min,max】连续,max+1即为所求。接着处理一些边界条件接好。但,太天真了(不过这种思路对于不含重复元素的数组仍然还是不错的思路),看看这种思路的代码实现:
class Solution {
public:
Solution():res(){
}
int firstMissingPositive(vector<int>& nums) {
if(nums.size()==)
return res;
int min=,max=;
int sum=;
for(int i=;i<nums.size();i++)
if(nums[i]>){
min=max=nums[i];
break;
}
for(int i=;i<nums.size();i++){
if(nums[i]>){
if(nums[i]<min)
min=nums[i];
if(nums[i]>max)
max=nums[i];
sum+=nums[i];
}
}
res=(max-min+)*(min+max)/-sum;
if(res==)//说明数字连续,没有中断,缺失最后一个未出来的正整数
res=max+;
if(min!=)
res=;
return res;
}
private:
int res;
};
依旧看看大神的想法:
http://www.cnblogs.com/AnnieKim/archive/2013/04/21/3034631.html
只要数组中有1这个元素,那么就会挤走数组中的第一个元素!如果有重复元素的话?(只会交换一次,后面的进行判定并忽略)
class Solution {
public:
int firstMissingPositive(vector<int>& nums) {
int i=;
while(i<nums.size()){
if(nums[i]!=i+ && nums[nums[i]-]!=nums[i] && nums[i]>= && nums[i]<=nums.size())
swap(nums[i],nums[nums[i]-]);
else
i++;
}
for(int i=;i<nums.size();i++)
if(nums[i]!=i+)
return i+;
return nums.size()+;
}
};
------------------------------------------------分界线-------------------------------------另一道题--------------------------------------------------
https://leetcode.com/problems/missing-number/
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(){
}
int missingNumber(vector<int>& nums) {
if(nums.size()==)
return res;
int min=,max=;
int sum=;
for(int i=;i<nums.size();i++)
if(nums[i]>=){
min=max=nums[i];
break;
}
for(int i=;i<nums.size();i++){
if(nums[i]>=){
if(nums[i]<min)
min=nums[i];
if(nums[i]>max)
max=nums[i];
sum+=nums[i];
}
}
res=(max-min+)*(min+max)/-sum;
if(res==)//说明数字连续,没有中断,缺失最后一个未出来的正整数
res=max+;
if(min!=)
res=;
return res;
}
private:
int res;
};
First Missing Positive && missing number的更多相关文章
- Missing Number, First Missing Positive
268. Missing Number Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find th ...
- [LeetCode] First Missing Positive 首个缺失的正数
Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0] ...
- [LeetCode]题解(python):041-First Missing Positive
题目来源 https://leetcode.com/problems/first-missing-positive/ Given an unsorted integer array, find the ...
- [array] leetcode - 41. First Missing Positive - Hard
leetcode - 41. First Missing Positive - Hard descrition Given an unsorted integer array, find the fi ...
- LeetCode: First Missing Positive 解题报告
First Missing Positive Given an unsorted integer array, find the first missing positive integer. For ...
- [Algorithm] Find first missing positive integer
Given an array of integers, find the first missing positive integer in linear time and constant spac ...
- [LeetCode] 41. First Missing Positive 首个缺失的正数
Given an unsorted integer array, find the smallest missing positive integer. Example 1: Input: [1,2, ...
- Leetcode First Missing Positive
Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0] ...
- 【leetcode】First Missing Positive
First Missing Positive Given an unsorted integer array, find the first missing positive integer. For ...
随机推荐
- MySQL优化的奇技淫巧之STRAIGHT_JOIN
原文地址:http://huoding.com/2013/06/04/261 问题 通过「SHOW FULL PROCESSLIST」语句很容易就能查到问题SQL,如下: SELECT post.* ...
- ORACLE 获取程序当前位置的方法
FUNCTION f_Get_Program_Position RETURN VARCHAR2 IS l_Owner ); l_Name ); l_Lineno NUMBER; l_Type ); B ...
- gson基本使用
http://www.jianshu.com/p/d62c2be60617 http://blog.csdn.net/lk_blog/article/details/7685169
- 分享一个Object.defineProperties 定义一个在原对象可读可写的方法
function A(){ this.name = 'hellow word'; } Object.defineProperties( A.prototype,{ doSomething2 : { v ...
- Python scipy.sparse矩阵使用方法
本文以csr_matrix为例来说明sparse矩阵的使用方法,其他类型的sparse矩阵可以参考https://docs.scipy.org/doc/scipy/reference/sparse.h ...
- Function类型
1.每个函数都是Function类型的,和其他引用类型一样都具有属性和方法.函数也是对象,因此函数实际上是一个指向函数对象的指针. 函数声明语法定义: 方法1: function sum(num1,n ...
- android访问webservice
// nameSpace 命名空间,methodName:方法名字:maps:参数集合:webserviceUrl:访问的webservice的网址:比如:http://17.18.199.100:8 ...
- java获取classpath
public class PathTest { public static void main(String[] args) { //获取根路径三种方式 System.out.println(Path ...
- Oracle 11g服务详细介绍及哪些服务是必须开启的?
安装oracle 11g R2中的方法成功安装Oracle 11g后,共有7个服务,这七个服务的含义分别为: 1. Oracle ORCL VSS Writer Service:Oracle卷映射拷贝 ...
- Android 手机自动化测试工具有哪几种?
1.Monkey是Android SDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流,如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试,也有日志输出.实际上该工 ...