現在告訴你某個序列中僅包含1-n之間的所有整數,給出你這個序列的前m位,後面的數字則遵循以下規則生成:每個位置會從1-n中選擇乙個之前出現次數最少的數字,如果有若干個出現次數最少的數字,則選擇最小的數字。例如僅包含1-3的序列中前4位數1 2 2 3,則生成的後4位是1 3 1 2.
思路:建立乙個長度為n的陣列int counts,記錄序列中的數字出現的次數,由於陣列下標從0開始,所以每接收到乙個資料data,counts[data - 1]++。資料輸入完成後,遍歷counts陣列,記錄陣列中最小元素對應的下標min,生成的數字就是min + 1,再更新一下陣列counts[min]++。注意counts陣列從下標0開始遍歷,除非後面的元素更小(不包括等於),否則不會更新min,所以如果有若干個出現次數最少的數字,自然而然選擇了最小的數字。
也可以建立乙個長度為n+1的陣列,這樣每個序列中的數字在陣列中都有對應的下標,不用+1或-1操作。
public class serial
for (int i = 0; i < m; i++)
}system.out.print(min + 1 + " ");
counts[min]++;
min = 0;}}
}
結果
已知乙個datetime,篩選其前七天的資料
一開始想的很簡單,直接用timedelta求7天的時間差,然後原始資料減去時間差,然後只需大於data pre seven,小於a即可,如下 a pd.to datetime 20120701 11 22 33 sevenday datetime.timedelta days 7 date pre ...
判斷乙個序列是否是另外乙個序列的子串行的演算法
思路一 從子串行中挨個找,找到乙個之後,擷取子串行和母序列之前的,然後繼續遞迴自身 1.先分析下找不到的情況,如果母序列從頭找到尾,也沒有找到,則視為不是其子序列 2.繼續分析找到的情況,如果找到之後,並且子串行的長度為1,則代表都找完了。3.如果這時子串行仍然還沒有找完,則擷取後繼續呼叫自身。pu...
括號匹配(乙個已知括號組的完成)
用陣列儲存,目的是找到乙個個完整的括號組,即括號組裡面左括號,右括號相等。對每個括號組進行處理。首先遍歷一組,記錄有多少個左括號。給每個陣列元素乙個編號,是陣列下標加一。再遍歷陣列,每找到乙個右括號,就往前找乙個左括號。找到一對後,用乙個二維陣列記錄左右括號的位置。為了避免左括號重複被找,每找到一對...