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),然後確定一個整數target=n+1,
再遍歷陣列,讓陣列中的正整數分別與1...target的數異或運算可得出最後結果,例如:陣列為[3,4,-1,1]那麼target=3+1=4;然後計算 (3^
於是重新思考,當想到是否可以把陣列中的元素放入“合適”的位置時,豁然開朗,例如將1放在0位置上,2放在1位置上。。。,最後變數陣列,如果某個位置上的數不合適,則返回該位置上“合適”的數,也就是First Missing Positive。
public int firstMissingPositive(int[] A) { if(A.length==0||A==null) return 1; //把元素放入正確的位置,例如1放在A[0],2放在A[1]... for(int i = 0;i<A.length;i++) { while(A[i]!=i+1) { if(A[i]>=A.length||A[i]<=0||A[i]==A[A[i]-1]) break; int temp = A[i]; A[i] = A[temp-1]; A[temp-1] = temp; } } for(int i = 0;i<A.length;i++) { if(A[i]!=i+1) return i+1; } return A.length+1; }
相關推薦
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] re
LeetCode41. First Missing Positive (陣列技巧)
Given an unsorted integer array, find the smallest missing positive integer. Example 1: Input: [1,2,0] Output: 3 Example 2: Input: [3,4,-
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
387. First Unique Character in a String(字串中的第一個唯一字元)-- c語言
387. First Unique Character in a String(字串中的第一個唯一字元)-- c語言Given a string, find the first non-repeating character in it and return it's ind
Leetcode 041 First Missing Positive(桶排序)
解題思路:桶排序的變種,每次把碰到把nums[i] 和 nums[nums[i]] 互換,保證 nums[i] = nums[nums[i]]。當然nums[i]小於零,或者是大於陣列的可以忽略。最後遍歷一遍陣列,第一個不匹配的位置即為答案。class Solution {
每日一題--LeetCode 387 (字串中的第一個唯一字元)java
題目描述: 程式碼如下: class Solution { public int firstUniqChar(String s) { String tmp=s; char []data=tmp.toCharArray(); if(
劍指offer題解(陣列中出現次數超過一半的數字)
題目描述 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。 解題思路 先找到出現次數最多
陣列中找幾個和為sum 且 不重複
class Solution { public: vector<vector<int> > combinationSum2(vector<int> &num, int target) { vector<int
資料結構——演算法之(032)(求兩個串中的第一個最長子串)
【申明:本文僅限於自我歸納總結和相互交流,有紕漏還望各位指出。 聯絡郵箱:[email protected]】 題目: 求兩個串中的第一個最長子串(神州數碼以前試題).如"abractyeyt","dgdsaeactyey"的最大子串為"actyey".題目
LeetCode刷題記錄——第387題(字串中的第一個唯一字元)
題目描述 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = “leetcode” 返回 0. s = “loveleetcode”, 返回 2. 思路分析 關鍵問題在於,如何找到第一個不重複字元
SSM框架的搭建(Spring+SpringMVC+Mybatis第一個專案的搭建)
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchem
bootstrap select 多選的用法,取值和賦值(取消預設選擇第一個的對勾)
h5自帶的select標籤可以實現按住ctrl鍵多選的功能,但是樣式及其難看。 bootstrap select是很好用的前端外掛 首先引入bootstrap和bootstrap-select的css和js <link rel="stylesheet" h
陣列中缺失的最小正整數
華電北風吹 日期:2016/2/24 題目描述: 對一個未排序的陣列,找出缺失的最小正整數。 例如,對於陣列[1,2,0]返回3;對於陣列[3,4,-1,1]返回2。 演算法時間複雜度應
如何優化Java程式:十進位制轉十六進位制(2的31次方以內的正整數)
程式碼如下: package com.java; import java.util.Scanner; public class TestTransform { public static void main(String[] args) { Scanner
LeetCode 41. 缺失的第一個正數(First Missing Positive)
style 第一個 交換 ret etc 沒有 解題思路 ssi != 題目描述 給定一個未排序的整數數組,找出其中沒有出現的最小的正整數。 示例 1: 輸入: [1,2,0] 輸出: 3 示例 2: 輸入: [3,4,-1,1] 輸出: 2 示例 3: 輸入: [
3.2.1 LeetCode陣列類題目選做(1)—— First Missing Positive & Majority Element & Product of Array Except Self
陣列題目概述 陣列的題目很多很重要,一般和其他知識點綜合應用。包括Two pointer,Binary Search,Dynamic Programming,Greedy,Backtracking 等,各類演算法都將分別選做一些題目學習交流總結。 這一系列選擇出一些非應用
尋找不在陣列中最小的正整數 First Missing Positive
問題:給出一個無序的陣列,其中包含有任意的整數。現在要求返回不包含在陣列中的最小的正整數。 要求:時間複雜度O(n),空間複雜度O(1)。 思路:如果不要求空間複雜度,可以用hash、map進行統計。但是現在,不允許藉助臨時空間。但是對於無序陣列,不借助空間怎麼可能統計的出
Find First and Last Position of Element in Sorted Array(數組中查找第一個元素和最後一個元素)
run nbsp arc example col ascend == sea 如果 Given an array of integers nums sorted in ascending order, find the starting and ending positio
(java)leetcode852 山脈陣列的封頂索引(二分查詢法找出陣列中最大值的下標)(Peak Index in a Mountain Array)
題目描述: 我們把符合下列屬性的陣列 A 稱作山脈: A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < ... A[i-1] < A
[Swift]LeetCode41. 缺失的第一個正數 | First Missing Positive
Given an unsorted integer array, find the smallest missing positive integer. Example 1: Input: [1,2,0] Output: 3 Example 2: Input: [3,4,-1,1]