leetCode刷題記錄4-面試經典150題-2

文章目錄

  • 不要擺,沒事干就刷題,只有好處,沒有壞處,實在不行,看看競賽題
    • 面試經典 150 題 - 2
      • 210. 課程表 II

不要擺,沒事干就刷題,只有好處,沒有壞處,實在不行,看看競賽題

面試經典 150 題 - 2

面試經典 150 題

210. 課程表 II

210. 課程表 II

  • 一眼拓撲排序. 好久沒寫過拓撲排序了,寫得特別糟糕
public int[] findOrder(int n, int[][] prerequisites) {int[] order = new int[n];if (prerequisites == null) {for (int i = 0; i < n; i++) order[i] = i;return order;}// 創建鄰接表 和 入度數組ArrayList<ArrayList<Integer>> adj = new ArrayList<>();for (int i = 0; i < n; i++) {adj.add(new ArrayList<>());}int[] inDegree = new int[n];for (int[] prerequisite : prerequisites) {adj.get(prerequisite[1]).add(prerequisite[0]);inDegree[prerequisite[0]]++;}// 入度隊列 (不需要棧)Stack<Integer> s = new Stack<>();for (int i = 0; i < inDegree.length; i++) {if (inDegree[i] == 0) s.push(i);}// 拓撲排序int cnt = 0;for (int i = 0; i < n; i++) {if (s.isEmpty()) break;Integer pop = s.pop();order[cnt++] = pop;for (Integer x : adj.get(pop)) {inDegree[x]--;if (inDegree[x] == 0) {s.push(x);}}}if (cnt < n) return new int[0];return order;
}
  • 看了下大佬的做法,發現確實有幾處值得修改

主要就是度為0的不必非要用棧,用隊列也行,隊列直接作為拓撲排序的終止條件即可
沒有前置關系時不需要要特判,全是度為0的節點,也可以照常執行
不要用statck,繼承了Vector, 有很多鎖,效率很低

修改后4ms,差不多了吧

public int[] findOrder(int n, int[][] prerequisites) {// 創建鄰接表 和 入度數組ArrayList<ArrayList<Integer>> adj = new ArrayList<>();for (int i = 0; i < n; i++) adj.add(new ArrayList<>());int[] inDegree = new int[n];for (int[] prerequisite : prerequisites) {adj.get(prerequisite[1]).add(prerequisite[0]);inDegree[prerequisite[0]]++;}// 入度隊列 (不需要棧)Deque<Integer> q = new LinkedList<>();for (int i = 0; i < inDegree.length; i++) {if (inDegree[i] == 0) q.offer(i);}// 拓撲排序int[] order = new int[n];int cnt = 0;while (!q.isEmpty()){Integer pop = q.poll();order[cnt++] = pop;for (Integer x : adj.get(pop)) {inDegree[x]--;if (inDegree[x] == 0) q.push(x);}}if (cnt < n) return new int[0];return order;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/9950.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/9950.shtml
英文地址,請注明出處:http://en.pswp.cn/web/9950.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[C++核心編程-06]----C++類和對象之對象模型和this指針

&#x1f3a9; 歡迎來到技術探索的奇幻世界&#x1f468;?&#x1f4bb; &#x1f4dc; 個人主頁&#xff1a;一倫明悅-CSDN博客 ?&#x1f3fb; 作者簡介&#xff1a; C軟件開發、Python機器學習愛好者 &#x1f5e3;? 互動與支持&#xff1a;&#x1f4ac;評論 &…

Microsoft 365 for Mac v16.84 office365全套辦公軟件

Microsoft 365 for Mac是一款功能豐富的辦公軟件套件&#xff0c;為Mac用戶提供了豐富的功能和工具&#xff0c;提高了工作效率和協作能力。Microsoft 365 for Mac是一款專為Mac用戶設計的訂閱式辦公軟件套件&#xff0c;旨在提高生產力和效率。 Microsoft 365 for Mac v16.84正…

數據賦能(83)——數據要素:數據要素管理與數據管理

數據要素管理則更關注數據作為生產性資源在創造經濟價值中的作用&#xff1b;數據管理更側重于數據在整個生命周期中的控制、保護和價值提升。 數據要素管理是對數據作為關鍵生產要素進行系統性管理的過程。它聚焦于數據在經濟和社會活動中的價值創造和貢獻&#xff0c;將數據…

ubantu安裝docker以及docker-compose

ubantu安裝docker以及docker-compose 安裝docker1、從官方存儲庫中安裝Docker2、啟動Docker服務3、驗證 安裝docker compose使用docker部署服務1、需要再opt文件夾下創建以下文件夾&#xff0c;/opt文件夾目錄說明2、可將已備份對應文件夾拷至對應文件夾下3、在/opt/compose目錄…

python集合

集合是一個無序的不重復元素序列&#xff0c;集合中的元素必須是不可變類型 集合的創建與刪除 用{}直接創建 用集合推導式創建 用ser&#xff08;&#xff09;函數將列表&#xff0c;元組&#xff0c;range對象轉換成集合 numset1{1,2,3,4,5}numset2{x**2 for x in range(…

【代碼】Mysql 查詢近一個月各類型設備新增數量

錯誤示例 SELECT COUNT(*) AS count, p.type, d.active_date FROM device d LEFT JOIN product p ON d.product_id p.pid WHERE MONTH (active_date) MONTH (CURRENT_DATE - INTERVAL 1 MONTH) AND YEAR (active_date) YEAR (CURRENT_DATE - INTERVAL 1 MONTH) group by p.…

mysql高可用集群MGR組復制的介紹、部署及配置說明

前言 MGR全稱MySQL Group Replication(Mysql組復制),是MySQL官方于2016年12月推出的一個全新的高可用與高擴展的解決方案。MGR提供了高可用、高擴展、高可靠的MySQL集群服務。 高一致性:基于分布式paxos協議實現組復制,保證數據一致性; 高容錯性:自動檢測機制,只要不…

霍金《時間簡史 A Brief History of Time》書后索引(A--D)

圖源&#xff1a;Wikipedia INDEX A Abacus Absolute position Absolute time Absolute zero Acceleration Age of the universe Air resistance Albrecht, Andreas Alpha Centauri Alpher, Ralph Anthropic principle Antigravity Antiparticles Aristotle Arrows of time …

基于Vant UI的微信小程序開發(隨時更新的寫手)

基于Vant UI的微信小程序開發? &#xff08;一&#xff09;懸浮浮動1、效果圖&#xff1a;只要無腦引用樣式就可以了2、頁面代碼3、js代碼4、樣式代碼 &#xff08;二&#xff09;底部跳轉1、效果圖&#xff1a;點擊我要發布跳轉到發布的頁面2、js代碼3、頁面代碼4、app.json代…

vue項目設置主題色

在vue開發過程中&#xff0c;很多頁面為了保持主題顏色統一&#xff0c;且方便后期管理&#xff0c;通常會設有主題色&#xff0c;通過主題色可以使得頁面上的按鈕單選框等控件保持顏色統一。 接下來介紹其中一種方法&#xff1a; 1.先建立一個js文件用于存放主題色&#xff…

我覺得POC應該貼近實際

今天我看到一位老師給我一份測試數據。 這是三個國產數據庫。算是分布式的。其中有兩個和我比較熟悉&#xff0c;但是這個數據看上去并不好。看上去第一個黃色的數據庫數據是這里最好的了。但是即使如此&#xff0c;我相信大部分做數據庫的人都知道。MySQL和PostgreSQL平時拿出…

Spark Streaming筆記總結(保姆級)

萬字長文警告&#xff01;&#xff01;&#xff01; 目錄 一、離線計算與流式計算 1.1 離線計算 1.1.1 離線計算的特點 1.1.2 離線計算的應用場景 1.1.3 離線計算代表技術 1.2 流式計算 1.2.1 流式計算的特點 1.2.2 流式計算的應用場景 1.2.3 流式計算的代表技術 二…

最小生成樹刷題筆記

算法基礎&#xff1a; 首先是prim算法三部曲&#xff1a; &#xff08;1&#xff09;找到距離最小生成樹最近的節點。 &#xff08;2&#xff09;將距離最小生成樹最近的節點加入到最小生成樹中。 &#xff08;3&#xff09;更新非最小生成樹節點到最小生成樹的距離。 實現…

HTML批量文件上傳3—Servlet批量文件處理FileUpLoad

作者:私語茶館 1.開源的文件上傳組件介紹 本文使用的是Apache Commons下面的一個子項目FileUpload,另外一個常見組件是SmartUpload。FileUpload遵循RFC 1897,即“Form-based File Upload in HTML”,對于請求需要滿足:HTTP協議,Post請求,content Type=“multipart/form-d…

Kafka 面試題(五)

1. kafka的消費者是pull(拉)還是push(推)模式&#xff0c;這種模式有什么好處&#xff1f; Kafka的消費者是pull&#xff08;拉&#xff09;模式。在這種模式下&#xff0c;消費者主動從Kafka的broker中拉取數據來進行消費。 這種pull模式的好處主要體現在以下幾個方面&#…

人工智能是什么

人工智能是一個廣泛的領域&#xff0c;其中包括了機器學習和深度學習。 - 機器學習&#xff1a; 是人工智能的一個子領域&#xff0c;它關注的是讓計算機系統通過學習數據&#xff0c;從中獲取知識并做出預測或決策&#xff0c;而無需明確地編寫特定的規則。機器學習的方法包括…

kernel32.dll丟失要如何解決?電腦kernel32.dll文件下載方法

kernel32.dll丟失要怎么解決才好&#xff1f;其實針對這個問題還是有很多種的解決方法的&#xff0c;只要你明白了kernel32.dll的作用&#xff0c;了解kernel32.dll&#xff0c;那么就可以有很多種方法去解決&#xff0c;下面一起來看看吧。 一.了解kernel32.dll文件 kernel32…

6個超TM好用的神仙App推薦!

1. AI文本視頻生成工具——Jurilu Jurilu 是一款功能強大的 AI 文本視頻生成器&#xff0c;允許用戶快速將文本內容轉換成極具吸引力的視頻。它的使用非常簡單&#xff1a;只需要輸入文字&#xff0c;選擇想要的樣式和模板&#xff0c;Jurilu 就會自動將文字轉換成生動的視頻。…

Vue項目npm install certificate has expired報錯解決方法

1.Vue項目 npm install 安裝依賴突然報錯&#xff1a; npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to https://registry.npm.taobao.org/zrender/download/zrender-4.3.0.tgz failed, reason: certificate has expired npm ERR! A com…

代碼隨想錄-算法訓練營day35【貪心算法05:無重疊區間、劃分字母區間、合并區間】

代碼隨想錄-035期-算法訓練營【博客筆記匯總表】-CSDN博客 第八章 貪心算法 part05● 435. 無重疊區間 ● 763.劃分字母區間 ● 56. 合并區間 詳細布置 今天的三道題目&#xff0c;都算是 重疊區間 問題&#xff0c;大家可以好好感受一下。 都屬于那種看起來好復雜&#xff…