iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
自我挑戰組

【帶你輕鬆入門演算法-Leetcode】系列 第 28

【第二十八天 - 系統設計 介紹】

Q1. 系統設計 是什麼

  • 在業界基本上都是團隊開發專案,每個人負責實作部分功能,而 Leetcode 會列出典型的系統設計,學會看到問題時,會使用什麼方式實作

參考資料:https://kknews.cc/career/43q4253.html

Q2. 學會 系統設計 概念可以做什麼 ?

  • 利於團隊合作開發,從系統設計題中了解系統間的組件關係、結構關係等。

Lab. 明天要解的題目:355. Design Twitter

  • 題目連結:https://leetcode.com/problems/design-twitter/
  • 題目敘述
    • 設計一個簡化版的 twitter,主要實現如下功能:
    • User 可以發布推文
    • User 可以追蹤 / 取消追蹤其他 User
    • 可以看到一個 User 的 news feed 中,最近 10 篇的推文
  • Twitter class 要包含如下 methods:
    • Constructor
    • void postTweet(int userId, int tweetId)
      • 用來發布推文的 function。
      • 由 ID 為 userId 的 User 發布了 ID 為 tweetId 的推文。
      • 每次 call 這個 function 的 tweetId 必須 unique 。
    • List<Integer> getNewsFeed(int userId)
      • 取得 ID 為 userId 的 User 的 news feed 中最近的 10 篇推文。
      • 每一個推文必須是由該 User 所發布,或是由該 User 追蹤的 User 所發布。
      • 必須由最新到最舊排序。
    • void follow(int followerId, int followeeId)
      • 用於讓 ID 為 followerId 的 User 追蹤 ID 為 followeeId 的 User。
    • void unfollow(int followerId, int followeeId)
      • 用於讓 ID 為 followerId 的 User 取消追蹤 ID 為 followeeId 的 User。

https://ithelp.ithome.com.tw/upload/images/20210928/20140592nuMfRGaEX7.png

  • 測資的 Input/Output
    • 根據每個函數實作並回傳相關資料
    • 不需真的讀取["Twitter","postTweet"....]或回傳[null,null....],

https://ithelp.ithome.com.tw/upload/images/20210928/20140592b7XaAdgm6z.png

  • 題目的條件
    • userIdfollowerIdfolloweeId 介於 1~500 間
    • tweetId 介於 0~10000
    • 每個 tweets 都有唯一的 ID ,不會重複
    • postTweetgetNewsFeedfollowunfollow函數最多呼叫 30000 次

https://ithelp.ithome.com.tw/upload/images/20210928/20140592i0wJcuNFJU.png


上一篇
【第二十七天 - Dijkstra 題目分析】
下一篇
【第二十九天 - 系統分析 題目分析】
系列文
【帶你輕鬆入門演算法-Leetcode】30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言