看板 PHP 關於我們 聯絡資訊
假設有串數列 1 4 6 2 3 8 8 2 9 4 2 如何快速的取出前面的某一段,即可包含全部的數字 1 4 6 2 3 8 8 2 9 4 2 ^^^^^^^^^^^^^^^^^ 以上面的例子需要取到9這個數字, 才能包含全部的數字 == 先講一下我的直覺做法 我是先算出全部有幾個不同的數字, 以上例來說是共有7個 ( 1 4 6 2 3 8 9 ) 再從頭開始掃,掃到不同的第七個時, 就可以取到9這個數字 有前輩可以有更好的解法嗎?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 42.71.40.209
xxxzzz:"算出全部有幾個不同的數字".可順便取要的結果.不用掃第2次 02/07 06:26
LPH66:具體來說,求每個數字第一次出現位置的最大值就是了 02/07 11:49
alog:array_search 找出 9 的位置,然後做 array_splice 就出來了 02/07 14:56
alog:如果只有少量數據這樣處理就很夠用了,還是我誤會什麼了? 02/07 14:57
alog:array_splice => array_slice 02/07 14:59
PsMonkey:樓上你好像誤會很大... (還是我誤會你了? XD) 02/07 16:50
alog:因為樓主交代很模糊呀XD 我就說我是不是誤會什麼了? 02/07 17:57
thitbbeb:應該是去重複之後的最後一個出現的數字? 02/07 22:34
danny8376:to alog 他要找的就是取到哪可以涵蓋所有出現過的字元 02/08 00:30
danny8376:你的做法是沒啥問題啦 但問題是根本連要找誰都還不知道 02/08 00:31
danny8376:反正最佳解應該就上面推的 找出所有字元最大的位置 02/08 00:32
danny8376:這樣只要掃描一次就夠了(次數記錄跟事後的比對先丟一旁) 02/08 00:32
chenlarry:用一個初始數值為0的陣列當INDEX,掃到的數字就把對應的 02/08 09:58
chenlarry:改為1,整個數列掃一輪,答案就出來了 02/08 09:59
sextitanic:能夠先排序再檢查嗎,檢查前一個跟現在抓的一不一樣 02/08 21:08
sextitanic:不然用新陣列 key 取舊陣列的 value,如果isset就跳過 02/08 21:10
sextitanic:不然的話看一下 array_unique 的做法 02/08 21:12
sunnyvisit:我會讓他value=key 去跑出另個array最後取key 02/08 21:51