<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
學校打算為全體學生拍一張年度紀念照。根據要求,學生需要按照 非遞減 的高度順序排成一行。
排序後的高度情況用整數陣列 expected
表示,其中 expected[i]
是預計排在這一行中第 i
位的學生的高度(下標從 0
開始)。
給你一個整數陣列 heights
,表示 當前學生站位 的高度情況。heights[i]
是這一行中第 i
位學生的高度(下標從 0 開始)。
返回滿足 heights[i] != expected[i]
的 下標數量 。
範例:
輸入:heights = [1,1,4,2,1,3] 輸出:3 解釋: 高度:[1,1,4,2,1,3] 預期:[1,1,1,2,3,4] 下標 2 、4 、5 處的學生高度不匹配。
範例 2:
輸入:heights = [5,1,2,3,4] 輸出:5 解釋: 高度:[5,1,2,3,4] 預期:[1,2,3,4,5] 所有下標的對應學生高度都不匹配。
範例 3:
輸入:heights = [1,2,3,4,5] 輸出:0 解釋: 高度:[1,2,3,4,5] 預期:[1,2,3,4,5] 所有下標的對應學生高度都匹配。
提示:
1 <= heights.length <= 100 1 <= heights[i] <= 100
此題不需要最終排序結果,只需要關注陣列所在索引和其對應的值排序後索引是否一致即可 可以用map儲存,key位heights中元素,value位key出現的次數
最後按i=1,i<=100遍歷一遍map,即可知道heights中每個值對應的順序了
func heightChecker(heights []int) int { m := make(map[int]int, 100) for i:=0; i<len(heights); i++ { if _,ok := m[heights[i]]; ok { m[heights[i]]++ } else { m[heights[i]]=1 } } var count int var j int for i:=1; i<=100; i++ { if v,ok := m[i]; ok { for k:=1;k<=v;k++ { if heights[j] != i { count++ } j++ } } } return count }
最初採用sorted方法,但是考慮到時間複雜度較高,進而採用桶排序方式
木桶長度為所有高度的範圍,初始值為0, 更新木桶資料為列表中對應高度的頻次,
再依次輸出木桶元素(輸出元素一定是按照非遞減順序),與原列表比較即可確定最小調換人數
class Solution(object): def heightChecker(self, heights): #桶排序 不選擇排序是因為時間複雜度高 bucket = [0]*101 #身高範圍1-100 for h in heights: bucket[h] += 1 count = 0 j = 0 max_height = max(heights) for i in range(1,max_height+1): while bucket[i] != 0 and j < len(heights): if i != heights[j]: count += 1 bucket[i] -=1 j += 1 return count
題目可以簡單的理解為我們將輸入的陣列進行升序排序後,再比較陣列變化前後發生位置變化的元素的個數,那就很簡單了,因為我們排序後要和排序前相比較,所以我們要先複製一個陣列出來以供排序後使用,然後我對源陣列進行升序排序,最後進行比較輸出位置變化元素的數量即可
class Solution { public: int heightChecker(vector<int>& heights) { int num=0; vector<int> p(heights); //複製一個一模一樣的陣列 sort(heights.begin(),heights.end()); //對源陣列進行升序排序 for(int i =0;i<heights.size();i++){ //迴圈比較找出位置發生變化元素的數量 if(heights[i]!=p[i]){ num++; } } return num; } };
參考
https://www.jb51.net/article/271252.htm
以上就是Go語言題解LeetCode1051高度檢查器範例詳解的詳細內容,更多關於Go語言高度檢查器的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45