看板 Ajax 關於我們 聯絡資訊
小弟被人問問題 有點搞混了 看似簡單 我只會javascript一點 會運用到propmt console.log for if 所以在這求程式解 給P幣5000元 Q1: 尋找陣列中缺少的數字: 輸入一個陣列, 該陣列的元素是 1 到 N+1,其中 N 是陣列的數 量。請找出其中缺少的數字。例如輸入 [1,2,4,5,6] 應輸出 3 答案應該會是 console.log( solution([1,2,4]) ); // 3 console.log( solution([1,2,3,5,6]) ); // 4 console.log( solution([1,2,3,4,5]) ); // 6 我的解法是 a.先不管propmt 輸入或輸出 直接改下方的console.log()當輸入 b. function solution(InputArray) { for(var i=0; i <= InputArray.length-1; i++) { if (InputArray[i+1]-InputArray[i] == 2) { return i+2; } } } console.log( solution([1,2,4]) ) 答案顯示3 console.log( solution([1,2,3,5,6]) )答案顯示4 console.log( solution([1,2,3,4,5]) ) 答案解示無解 c. 這樣只能求解數列中有缺漏數字, console.log( solution([1,2,4]) ); // 3 console.log( solution([1,2,3,5,6]) ); // 4 換句話說不能求解 連續數列N元素,再補遞N+1,會沒辦法判斷 console.log( solution([1,2,3,4,5]) ); // 6 d.請問該怎解法 以及 增加輸入陣列解法 輸出答案解法 請大大協助 P幣5000元 感謝 -- 中國 香港 澳門 韓國 日本 菲律賓 汶萊 馬來西亞 新加坡 泰國 越南 柬埔寨 緬甸 斯里蘭卡 卡達 約旦 巴勒斯坦 以色列 埃及 澳大利亞 紐西蘭 芬蘭 瑞典 挪威 丹麥 冰島 俄羅斯 愛沙尼亞 拉脫維亞 立陶宛 波蘭 德國 捷克 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.229.158 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1460828477.A.B0E.html ※ 編輯: jackjenny (114.42.229.158), 04/17/2016 01:41:39 ※ 編輯: jackjenny (114.42.229.158), 04/17/2016 01:43:02
GoalBased: for(var i=0; i <= input.length; i++) 04/17 01:53
GoalBased: {if(input[i] != i+1) return i+1;} 04/17 01:53
GoalBased: 沒經過測試0.0 04/17 01:54
amaameryou: for(var i=1; i <= InputArray.length+1; i++){ 04/17 02:40
amaameryou: if (InputArray.indexOf(i)==-1){console.log(i);} 04/17 02:40
amaameryou: } //利用陣列 indexOf 查詢 04/17 02:41
amaameryou: //還是要跑1~N+1檢查,當然查到就能break 04/17 02:44
amaameryou: //假設數列是正整數 04/17 02:46
jackjenny: 請問a大 ==-1 是什意思? ^^ 04/17 04:42
jackjenny: 我已經解出來了 利用A大提到indexof()方法 04/17 05:43
jackjenny: 不過最後一行 console.log(i)會多一行錯誤@@? 04/17 05:44
jackjenny: 改成return(i)就可以了 不知道為什@@? 04/17 05:44
johnny9144: 因為用console.log(I) 你的function 沒有回傳值 04/17 10:36
johnny9144: 這個時候你變成要console.log()沒有填值 04/17 10:37
johnny9144: 所以錯誤 04/17 10:37
johnny9144: 也就是說 用a大的方法你直接 呼叫function 就好,不要 04/17 10:39
johnny9144: 把function 包在console.log()裡面 04/17 10:39
amaameryou: reutrn-1 是沒找到, return >-1 是回傳在陣列中的位置 04/17 12:27
amaameryou: 錯誤原因johnny大已經說明, 改為return i是對的 04/17 12:28
amaameryou: https://goo.gl/Kg9Qt array indexOf 說明 04/17 12:30
zxm20243: 算和直接扣掉應該是O(n) 04/17 16:41
zxm20243: solution = function(arr) { 04/17 16:41
zxm20243: var len = arr.length; 04/17 16:42
zxm20243: var sum = arr.reduce((to, val) => to + val, 0); 04/17 16:42
zxm20243: var ans = (len + 1) * (len + 2) / 2 - sum; 04/17 16:43
zxm20243: return (ans === len + 1) ? null : ans; 04/17 16:43
zxm20243: }; 04/17 16:43
zxm20243: 不過如果數字是遞增還是一個一個找,找到就break好了 04/17 16:47
jackjenny: 謝 會給A大P幣 研究下怎給P幣指令@@ 04/19 01:43
abandonONE: if那行,「== 2」換成「!= 2」就可以了 04/20 15:54
abandonONE: if那行,「== 2」換成「!= 1」就可以了 04/20 15:54
abandonONE: 抱歉我第一行打錯了 囧rz 04/20 15:55