LeetCode First Missing Positive

Given an unsorted integer array, find the first missing positive integer.

For example,
Given?[1,2,0]?return?3,
and?[3,4,-1,1]?return?2.

Your algorithm should run in?O(n) time and uses constant space.

解題思路:數組總共有n個數,若都是連續的,最大的數是n,也就是說返回的值最大為n+1,遍歷數組,如果當前的數num[i],

如果num[i]<=0或者num[i]超過了n,則第一個丟掉的整數必然在num[i]的前面,將num[i]和num[n-1]互換,n--;

如果1<=num[i]<=n,表明這個數可能是好的,將他放在正確的位置swap(num[i],num[num[i]-1])

如果num[i]==i+1,則表明該數字在正確的位置,i++

class Solution {
public:int firstMissingPositive(int A[], int n) {int m = n;for(int i=0;i<m;i++){if(A[i] == i+1)continue;else{if(A[i] > m || A[i] == 0 || A[i] < 0 || A[i] <= i){if(i==m-1)return m;swap(A[i],A[m-1]);m--;i--;}else{if(A[i] == A[A[i]-1]){swap(A[i],A[m-1]);m--;i--;}else{swap(A[i],A[A[i]-1]);i--;}}}}return m+1;}
};

?

轉載于:https://www.cnblogs.com/55open/p/4155143.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273491.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273491.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273491.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[java] 虛擬機(JVM)底層結構詳解[轉]

[java] 虛擬機(JVM)底層結構詳解[轉] 本文來自&#xff1a;曹勝歡博客專欄。轉載請注明出處&#xff1a;http://blog.csdn.net/csh624366188 在以前的博客里面&#xff0c;我們介紹了在java領域中大部分的知識點&#xff0c;從最基礎的java最基本語法到SSH框架。這里面應該包含…

jquery擴張函數

//jquery擴展函數判斷是否是手機號碼 $.fn.isMobile function(){ alert("zhangsan"); var tmptxt$(this).val().trim(); var RegEx/^1[3|4|5|8][0-9]\d{8}$/;return RegEx.test(tmptxt); }; //jquery擴展函數判斷是否是固定電話 $.fn.isTel function()…

用計算器計算“異或CRC”

再計算器上輸入以下數字&#xff0c;每輸入一個數字&#xff0c;按一下“Xor” 轉載于:https://www.cnblogs.com/YangBinChina/p/4164513.html

Java正則表達式較驗手機號、郵箱

import java.util.regex.Matcher; import java.util.regex.Pattern; public class PatternTest { /** * 驗證郵箱地址是否正確 * param email * return */ public static boolean checkEmail(String email){ boolean flag false; try{ String check "^([a-z0…

ios數據庫

1. ios數據庫管理軟件 ios使用的數據庫是sqlite 管理軟件有2種, 我只記得一種, 名字叫做 MesaSQLite 2. sqlite數據庫 2.1.修改表結構 ①&#xff1a;更改字段類型長度 ALTER TABLE 表名 ALTER COLUMN 字段名 類型的長度--varchar(50) 例&#xff1a;把城市表的城市字段原來長度…

【discuz x3】源代碼中的sql調用

【discuz x3】源代碼中的sql調用 http://blog.csdn.net/yanhui_wei/article/details/17554655轉載于:https://www.cnblogs.com/actorai/p/4168405.html

Mybatis的模糊查詢

方法1&#xff1a;在其它地方對其進行相關處理&#xff0c;語句與正常的查詢無異 在sqlMap中與正常的無異&#xff0c;如下所示&#xff1a; <select id"getNovaUserInfoByNickLike" resultMap"novaUserInfoMap"> <include refid"selectNo…

跨域(三)——JSONP

一、什么是JSONP? 百度百科&#xff1a;JSONP(JSON with Padding)是JSON的 一種“使用模式”&#xff0c;可用于解決主流瀏覽器的跨域數據訪問的問題。由于同源策略&#xff0c;一般來說位于 server1.example.com 的網頁無法與不是 server1.example.com的服務器溝通&#xff0…

Spring DAO之JDBC

Spring提供的DAO(數據訪問對象)支持主要的目的是便于以標準的方式使用不同的數據訪問技術&#xff0c; 如JDBC&#xff0c;Hibernate或者JDO等。它不僅可以讓你方便地在這些持久化技術間切換&#xff0c; 而且讓你在編碼的時候不用考慮處理各種技術中特定的異常。為了便于以一種…

程序猿是如何解決SQLServer占CPU100%的

文章目錄 遇到的問題使用SQLServer Profiler監控數據庫 SQL1&#xff1a;查找最新的30條告警事件SQL2&#xff1a;獲取當前的總報警記錄數有哪些SQL語句會導致CPU過高&#xff1f;查看SQL的查詢計劃 選擇top記錄時&#xff0c;盡量為order子句的字段建立索引查看SQL語句CPU高的…

通過wifi調試Android程序

原文&#xff1a;http://www.cnblogs.com/sunzhenxing19860608/archive/2011/07/14/2106492.html 1.首先讓android手機監聽指定的端口&#xff1a;  這一步需要使用shell&#xff0c;因此手機上要有終端模擬器&#xff0c;不過網上很多&#xff0c;隨便找個就行了&#xff0c…

基于jQuery的對象切換插件:soChange 1.5 (點擊下載)

http://www.jsfoot.com/jquery/demo/2011-09-20/192.html 所有參數&#xff1a; $(obj).soChange({ thumbObj:null, //導航對象&#xff0c;默認為空 botPrev:null, //按鈕上一個&#xff0c;默認為空 botNext:null, //按鈕下一個。默認為空 thumbNowClass:no…

atitit.Oracle 9 10 11 12新特性attilax總結

atitit.Oracle 9 10 11 12新特性 1. ORACLE 11G新特性 1 1.1. oracle11G新特性 1 1.2. 審計 1 1.3. 1. 審計簡介 1 1.4. 其他&#xff08;大部分是管理功能&#xff09; 2 2. Oracle 12c 的 12 個新特性 2 2.1. 2 Improved Defaults 增強了DEFAULT, default目前可以直接指代…

mysql讀書筆記---mysql safe update mode

You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column 查看 mysql> show variables like %sql_safe%; 關閉 mysql> set sql_safe_updates0; 開啟 mysql> set sql_safe_updates1;

基于纖程(Fiber)實現C++異步編程庫(一):原理及示例

纖程&#xff08;Fiber&#xff09;和協程&#xff08;coroutine&#xff09;是差不多的概念&#xff0c;也叫做用戶級線程或者輕線程之類的。Windows系統提供了一組API用戶創建和使用纖程&#xff0c;本文中的庫就是基于這組API實現的&#xff0c;所以無法跨平臺使用&#xff…

MYSQL讀書筆記---運算符、字符串操作

運算符###########################################,!(<>),>,>,<,< is null , is not null, isnull(expr) expr between min and max expr in(v1,v2,...)流程#############################################mysql> select ifnull(1,0); #如果第一個參數為…

fluidity詳解

fluidity詳解 1.fluidity編譯過程 1.1.femtools庫調用方法 編譯fluidity/femtools目錄下所有文件&#xff0c;打包為libfemtools.a靜態庫文件&#xff1b;通過-lfemtools參數&#xff0c;并指定libfemtools.a靜態庫位置&#xff0c;即可調用 femtools 庫內所有函數2.fluidity主…

mysql讀書筆記---if語句

IF(expr1,expr2,expr3) 如果expr1是TRUE(expr1<>0 and expr1<>NULL)&#xff0c;則IF()的返回值為expr2;否則返回值則為expr3。IF()的返回值為數字值或字符串值&#xff0c;具體情況視其所在語境而定。 mysql>SELECT?IF(1>2,2,3); ->3 mysql>SELECT I…

C語言 將整數寫入內存指定的連續字節單元中

將整數數組寫入0x40003000開始的連續10個字節內存單元中&#xff0c;注意unsigned char *指向一個字節&#xff0c;而int *指向1個字&#xff08;4個字&#xff09;&#xff0c;但是可以把字中存儲的整數放入字節單元中&#xff0c;只要不超過表示的范圍&#xff0c;注意雖然un…

mysql讀書筆記----時間函數

1.獲得當前時間&#xff1a;時間格式yyyy-MM-dd curdate();2.DAYOFWEEK(date) 3.WEEKDAY(date) 4.DAYOFMONTH(date) 5.DAYOFYEAR(date) 6.MONTH(date) 7.DAYNAME(date) 8.MONTHNAME(date) 9.QUARTER(date) 10.WEEK(date) WEEK(date,first) 11.YEAR(date) 12.HOUR(time) 13.MINU…