我好想轉職,有沒有人可以內推我去寫韌體 41. First Missing Positive 有一個array nums,請問第一個沒有在nums裡面的正整數是多少? 請用o(n)時間複雜度、o(1)空間複雜度 思路 : 負數不重要 第一個沒出現的正整數如果是x,那代表1~x-1都有在nums裡面 假設nums的長度為n,那最大可能的答案就是n+1 原本我的解法是建立1個n+1的bool矩陣 將有出現在nums裡不為負數、<=n+1的值設成true,最後去找第一個值為false的index 那個就是答案 不過題目要求要用o(1)空間複雜度 所以改成將nums裡所有負數的值改成n+1 接著去找小於nums[i]<n+1,並把nums[nums[i]-1]=-nums[nums[i]-1] 最後去找第一個i,nums[i]>0,這樣i+1就是答案 如果都是負數答案就是n+1 C code int firstMissingPositive(int* nums, int numsSize) { for (int i=0;i<numsSize;i++){ if (nums[i]<=0){ nums[i]=numsSize+1; } } for (int i=0;i<numsSize;i++){ int temp=nums[i]; if (nums[i]<0){ temp=-temp; } //nums[temp-1]>0 避免已經改過的值重複修改變成正數,所以負數不進行修改 if (temp<=numsSize && nums[temp-1]>0){ nums[temp-1]=-nums[temp-1];//要-1是因為index從0開始 } } for (int i=0;i<numsSize;i++){ if (nums[i]>0){ return i+1; } } return numsSize+1; } 我在寫這題的時候剛好在聽天音妹妹的3D LIVE 好想爪在天音妹妹的大腿上 -- ※ 發信站: 批踢踢實業坊(ptt-web.org.tw), 來自: 42.72.109.58 (臺灣) ※ 文章網址: https://ptt-web.org.tw/Marginalman/M.1711453857.A.B10
oinishere: 大師 你要給雷米一個妹妹了沒 03/26 19:52
wu10200512: 韌體很無聊欸 03/26 19:53
wu10200512: 根本用不到這些演算法 03/26 19:53
HGK: 韌體很無聊+ 03/26 19:54
JIWP: 我ME,你們那些都本科阿,我非本科只能去擦屎 03/26 19:55
glenber: 包養真亂 03/26 19:55
JIWP: 話說廷廷現在不是在韌體實習? 03/26 19:55
wu10200512: 對ㄚ 所以我才覺得很無聊 03/26 19:56
JIWP: 哭了,我連覺得無聊的機會都沒有 03/26 19:58