148. 顏色分類

給定一個包含紅,白,藍且長度為 n 的數組,將數組元素進行分類使相同顏色的元素相鄰,并按照紅、白、藍的順序進行排序。

我們可以使用整數 0,1 和 2 分別代表紅,白,藍。

?注意事項

不能使用代碼庫中的排序函數來解決這個問題。
排序需要在原數組中進行。

樣例

給你數組?[1, 0, 1, 2], 需要將該數組原地排序為?[0, 1, 1, 2]

挑戰?

一個相當直接的解決方案是使用計數排序掃描2遍的算法。

首先,迭代數組計算 0,1,2 出現的次數,然后依次用 0,1,2 出現的次數去覆蓋數組。

你否能想出一個僅使用常數級額外空間復雜度且只掃描遍歷一遍數組的算法?

?

?

?

比較容易聯想到快排,把所有0扔到1左邊,把所有2扔到1右邊,問題就在于我們怎樣找扔的位置

因為我們不知道1在哪,所以把0扔到最左(left),2扔到最右(right),初始化left=0,right=size()-1

2比較好處理,查到一個2就往最后right扔,扔一次就right--

那么怎么找0該扔到的位置?

有這么幾種情況

1、i=left,就是說查到的0就在該在的位置,那么這時候需要i++,left++

2、i!=left,那么這時候就需要交換,交換后left位置為0,所以需要left++

 1 void sortColors(vector<int> &nums) {
 2         // write your code here
 3         int left=0, right=nums.size()-1;
 4         int index=0;
 5         while(index<=right){
 6             if(nums[index]==0){
 7                 if(index==left){
 8                     index++;
 9                 }
10                 else{
11                     swap(nums[index], nums[left]);
12                 }
13                 left++;
14             }
15             else if(nums[index]==2){
16                 swap(nums[index], nums[right]);
17                 right--;
18             }
19             else{
20                 index++;
21             }
22         }
23     }

看的出來,查到1就直接跳過了,只處理查到0和2的情況

轉載于:https://www.cnblogs.com/TheLaughingMan/p/8171250.html

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

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

相關文章

vue項目token放在哪里_關于vue動態菜單的那點事

vue-element-admin4.0國內節點訪問地址&#xff1a;https://panjiachen.gitee.io/vue-element-admin-site/zh/本此使用的是https://github.com/PanJiaChen/vue-element-admin/tree/i18n 國際化分支的版本。說是除了國際化其他都一樣。本文主要介紹前臺動態的使用資源權限。后臺…

H264學習方法歷程資料

我的H.264學習歷程 半年前&#xff0c;我知道了H.264這個名詞。那個時候決定學習H.264&#xff0c;可是我連資料都不知道如何收集。而且整個學校就只有我一個人在學習H.264&#xff0c; 找不到人交流&#xff0c;所以那個時候學得真的是舉步維艱&#xff0c;很痛苦&#xff0c…

深度學習之 ROI Pooling

什么是ROI&#xff1f; ROI是 Region of interest 的簡寫&#xff0c;指的是 Faster R-CNN 結構中&#xff0c;經過 RPN 層后&#xff0c;產生的 proposal 對應的 box 框。 ROI Pooling 顧名思義&#xff0c;是 pooling 層的一種&#xff0c;而且是針對 ROIs 的 pooling。整個…

KD樹小結

很久之前我就想過怎么快速在二維平面上查找一個區域的信息&#xff0c;思考許久無果&#xff0c;只能想到幾種優秀一點的暴力。 KD樹就是干上面那件事的。 別的不多說&#xff0c;趕緊把自己的理解寫下來&#xff0c;免得涼了。 KD樹的組成 以維護k維空間(x,y,……)內的KD樹為例…

多元函數求極值中的a_多元函數的條件極值和拉格朗日乘數法

、條件極值、拉格朗日乘數法1. 轉化為無條件極值在討論多元函數極值問題時&#xff0c;如果遇到除了在定義域中尋求駐點(可能的極值點)外&#xff0c;對自變量再無別的限制條件&#xff0c;我們稱這類問題為函數的無條件極值。如求的極值&#xff0c;就是無條件極值問題。然而在…

深度學習之 RPN(RegionProposal Network)- 區域候選網絡

anchor boxes基本概念與作用: feature map 上的一個點可以映射回輸入圖片上的一個點&#xff0c;以特征圖上這個點為中心&#xff0c;預先人為設定 k 個 boxes&#xff0c;這些 boxes 就稱為在這個點上生成的 k 個 anchor boxes&#xff08;所有anchor boxes的中心點坐標是一樣…

h264的碼率控制 JVT-G012

開始看h264的碼率控制&#xff0c;很多地方都提到 G012&#xff0c;拿來做為參考比較&#xff0c;看來很有必要研究清楚。 偶這人&#xff0c;E文文檔不翻譯的話&#xff0c;看過就忘了&#xff0c;于是草草翻譯了下&#xff0c;因為不打算做B幀&#xff0c;也不準備在同一幀中…

Android RecyclerView嵌套EditView實時更新Item數據

一、場景&#xff08;例如&#xff1a;購物車&#xff09; 1、當我們需要以列表樣式管理某些數據時&#xff0c;可能需要列表項的某個字段可編輯 2、編輯Item上的某個字段后可能還要更新相關字段的值 二、可能遇到的問題 1、列表滑動導致輸入框中的數據錯位&#xff08;或者焦點…

workbench拓撲優化教程_優化技術在水泵水力設計的應用(上篇)

文章來源&#xff1a;安世亞太官方訂閱號&#xff08;搜索&#xff1a;Peraglobal&#xff09;CFD技術在泵的內流數值模擬、研究泵內部流動規律和結構方面已廣泛應用&#xff0c;取得了很多成果。但是初步設計的產品如果通過CFD仿真得到的性能曲線不能滿足使用要求&#xff0c;…

深度學習之 TensorRT

1 簡介 TensorRT是一個高性能的深度學習推理&#xff08;Inference&#xff09;優化器&#xff0c;可以為深度學習應用提供低延遲、高吞吐率的部署推理。TensorRT可用于對超大規模數據中心、嵌入式平臺或自動駕駛平臺進行推理加速。TensorRT現已能支持TensorFlow、Caffe、Mxne…

H.264筆記

H.264標準寫得比較繁復&#xff0c;所以考慮在瀏覽完Whitepaper之后就開始研讀X264代碼。X264代碼風格還是比較清晰簡潔的。根據對標準得理解&#xff0c;Picture Order Count在Slice解碼的一開始就被提及&#xff1a;I0 B1 B2 P3 B4 B5 P6I0 P3 B1 B2 P6 B4 B5于是I0的POC是0&…

進制轉換中dbho是什么意思_什么是網段?二進制十進制如何互相轉換?看完這篇,你就全明白了...

之前的文章講了ip&#xff0c;子網掩碼&#xff0c;網關的關系&#xff0c;今天著重講一下網段。我們用傻瓜交換機通訊時&#xff0c;一個網段的設備才能互相通訊&#xff0c;怎么能判斷兩個ip是同一個網段呢&#xff1f;今天就簡單的說一下。(這篇文章用語音聽可以起到催眠作用…

【網絡流24題】星際轉移問題(最大流)

【網絡流24題】星際轉移問題&#xff08;最大流&#xff09; 題面 Cogs 題解 因為天數是未知的&#xff0c;所以我們要想辦法處理天數 可以選擇二分或者依次累加天數 因為數據范圍較小&#xff0c;使用二分可能反而復雜度會增高 所以使用不斷累加天數 那么&#xff0c;把所有的…

使用 gunicorn 部署flask項目

1、WSGI協議 Web框架致力于如何生成HTML代碼&#xff0c;而Web服務器用于處理和響應HTTP請求。Web框架和Web服務器之間的通信&#xff0c;需要一套雙方都遵守的接口協議。WSGI協議就是用來統一這兩者的接口的。 2、WSGI容器 常用的WSGI容器有Gunicorn和uWSGI&#xff0c;但G…

軟件需求與問題解決

&#xff08;一&#xff09; 小滿當上項目經理后不久&#xff0c;參與了一個大項目。當時市場簽下來的時候&#xff0c;公司里面是歡天喜地的。項目做了一年多。到了交付的時候&#xff0c;用戶卻很不滿意&#xff0c;當初說好的東西&#xff0c;好多都變了卦。用戶是上帝&…

flex 換主軸后子元素占滿_Chrome72 嵌套 flex 布局修改,你的網站可能會發生布局錯亂...

起源2019 年 1 月 29 日&#xff0c;Chrome72 正式版(72.0.3626.81)發布&#xff0c;本次發布帶來了一個改變&#xff0c;且沒有在更新日志中提及&#xff0c;該改變導致某些網站發生了布局錯亂。該改變主要針對的是嵌套的flex布局&#xff0c;下面我們一起看下是怎么回事。問題…

使用 Django + Wusgi + Nginx 部署 Django

如何在生產上部署Django? Django的部署可以有很多方式&#xff0c;采用 nginxuwsgi 的方式是其中比較常見的一種方式。 uwsgi介紹 uWSGI是一個Web服務器&#xff0c;它實現了WSGI協議、uwsgi、http等協議。Nginx中HttpUwsgiModule的作用是與uWSGI服務器進行交換。 WSGI / …

網絡學習網址

網絡之路博客 http://ccieh3c.com/ 轉載于:https://www.cnblogs.com/changha0/p/8179801.html

路由到另外一個頁面_Nextjs使用解讀一(項目搭建與路由系統)

文章說明&#xff1a;1. 之前想搭建個人博客&#xff0c;由于學習的是react技術棧&#xff0c;所以就到處搜羅資料學了nextjs&#xff0c;配合koa就把博客搭起來了。該系列文章基于我的學習筆記&#xff0c;重新整理了一遍&#xff0c;如果有錯誤之處&#xff0c;還請指正。2. …

微信獲取token -1000

最終翻看微信開發api找到需要去配置IP白名單。只需要配置訪問來源IP即可。 轉載于:https://www.cnblogs.com/yangjinqiang/p/8184663.html