第一題是地裏常見的 domain , freq 問題
第二題是 每個使用者有 網頁訪問紀錄。求任兩使用者、最大連續共同瀏覽紀錄
說起來好繞口
直接舉例:
user0 = ["/start.html", "/green.html", "/blue.html", "/pink.php", "/register.asp&qposition 是否為 上一次的position+1.
- 如果不是的話、代表非連續。
下面是我的參考代碼, 空間複雜度O(N), 時間複雜度 O(N) 希望有更佳解
需要大米....給大米不會扣您分數!
- user0 = ["/start.html", "/green.html", "/blue.html", "/pink.php", "/register.asp", "/orange.html"]
- user1 = ["/start.html", "b.php", "/pink.php", "/register.asp", "/orange.html", "/red.html"]
- user2 = ["/red.html", "/green.html", "/blue.html", "/pink.php", "/register.asp"]
- user3 = ["/blue.html", "/logout.php"]
- def findContiguousHistory(u1, u2):
- u1_map = dict()
- u2_map = dict()
- # Build map: key(url_path), value(position)
- for i, val in enumerate(u1):
- u1_map[val] = i
- for i, val in enumerate(u2):
- u2_map[val] = i
- longest_consecutive_common_records = []
- curr_records = []
- for i, curr_item in enumerate(u1):
- curr_item = u1[i]
- if len(curr_records) > len(longest_consecutive_common_records):
- longest_consecutive_common_records = curr_records[:]
- if curr_item in u2_map:
- if len(curr_records) == 0:
- curr_records.append(curr_item)
- elif curr_records and u2_ptr + 1 == u2_map[curr_item]:
- curr_records.append(curr_item)
- else:
- curr_records = [curr_item]
- u2_ptr = u2_map[curr_item]
- continue
- # reset
- curr_records = []
- u2_ptr = -1
- return longest_consecutive_common_records
- print(findContiguousHistory(user0, user1))
- # ['/pink.php', '/register.asp', '/orange.html']
- print(findContiguousHistory(user0, user0))
复制代码
|