力扣-貪心算法4

406.根據身高重建隊列

406. 根據身高重建隊列

題目

假設有打亂順序的一群人站成一個隊列,數組?people?表示隊列中一些人的屬性(不一定按順序)。每個?people[i] = [hi, ki]?表示第?i?個人的身高為?hi?,前面?正好?有?ki?個身高大于或等于?hi?的人。

請你重新構造并返回輸入數組?people?所表示的隊列。返回的隊列應該格式化為數組?queue?,其中?queue[j] = [hj, kj]?是隊列中第?j?個人的屬性(queue[0]?是排在隊列前面的人)。

示例 1:

輸入:people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]
輸出:[[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]]
解釋:
編號為 0 的人身高為 5 ,沒有身高更高或者相同的人排在他前面。
編號為 1 的人身高為 7 ,沒有身高更高或者相同的人排在他前面。
編號為 2 的人身高為 5 ,有 2 個身高更高或者相同的人排在他前面,即編號為 0 和 1 的人。
編號為 3 的人身高為 6 ,有 1 個身高更高或者相同的人排在他前面,即編號為 1 的人。
編號為 4 的人身高為 4 ,有 4 個身高更高或者相同的人排在他前面,即編號為 0、1、2、3 的人。
編號為 5 的人身高為 7 ,有 1 個身高更高或者相同的人排在他前面,即編號為 1 的人。
因此 [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] 是重新構造后的隊列。

示例 2:

輸入:people = [[6,0],[5,0],[4,0],[3,2],[2,2],[1,4]]
輸出:[[4,0],[5,0],[2,2],[3,2],[1,4],[6,0]]

提示:

  • 1 <= people.length <= 2000
  • 0 <= h_{i} <= 10^{6}
  • 0 <= k_{i}< people.length
  • 題目數據確保隊列可以被重建

題解

這個題的要求是前面?正好?有?ki?個身高大于或等于?hi?的人。舉例子,對于第i個人,身高hi,前面有ki個比他高。這里要注意一個點,前面ki個比他高,也可能有比他矮的。

那么我們可以從高到矮來排列。如果身高一致,那就按照ki從小到大來排列。

sort(people.begin(),people.end(),[](vector<int>& a,vector<int>& b){return a[0]>b[0] || (a[0]==b[0]&&a[1]<b[1]);
});

對于第i個人,就插入到第ki個位置。(關鍵點還是在于,后面插入的人,也就是矮個子的人插入到前面對前面是無影響)

代碼如下

class Solution {
public:vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {sort(people.begin(),people.end(),[](vector<int>& a,vector<int>& b){return a[0]>b[0] || (a[0]==b[0]&&a[1]<b[1]);});vector<vector<int>> ans;for(vector<int>& p:people){ans.insert(ans.begin()+p[1],p);}return ans;}
};

665.非遞減數列

665. 非遞減數列

題目

給你一個長度為?n?的整數數組?nums?,請你判斷在?最多?改變?1?個元素的情況下,該數組能否變成一個非遞減數列。

我們是這樣定義一個非遞減數列的:?對于數組中任意的?i?(0 <= i <= n-2),總滿足?nums[i] <= nums[i + 1]

示例 1:

輸入: nums = [4,2,3]
輸出: true
解釋: 你可以通過把第一個 4 變成 1 來使得它成為一個非遞減數列。

示例 2:

輸入: nums = [4,2,1]
輸出: false
解釋: 你不能在只改變一個元素的情況下將其變為非遞減數列。

提示:

  • n == nums.length
  • 1 <= n <= 10^{4}
  • -105?<= nums[i] <=?10^{5}

題解

找對所謂的對比點。nums[i] <= nums[i + 1]。

對于第i個點,實際上的對比點應該是i-2。

第一種情況是nums[i]>nums[i-2].如果第i個點是5,前面是47.也就是475.

這個時候把nums[i-1]變成nums[i-2]~nums[i]之間就可以。

也就是把7變成[4,5].

第二種情況是nums[i]<nums[i-2].如果第i個點是3,前面是47,也就是473.

但是這個時候不知道i+1是怎么樣的。所以保險就是讓nums[i]=nums[i-1].

第一種情況中需要改變的點本身就在一個非遞減數列內,不會破壞后面非遞減數列的連續性,不會破壞后面非遞減數列的連續性,不會破壞后面非遞減數列的連續性,那么我們只需要記錄有這么一個點,不對它做處理就可以。
第二種情況中需要改變的點在2個非遞減數列的中間,會破壞前后非遞減數列的連續性,會破壞前后非遞減數列的連續性,會破壞前后非遞減數列的連續性,那么我們需要記錄該點的同時,來改變該點,來達到前后非遞減數列的連續性。

class Solution {
public:bool checkPossibility(vector<int>& nums) {int n=nums.size();int i;int count=0;for(i=1;i<n&&count<2;i++){if(nums[i-1]>nums[i]&&++count<2&&i-2>=0&&nums[i-2]>nums[i])nums[i]=nums[i-1];}return count<=1;}
};

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

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

相關文章

MyBatis的簡介與使用

Mybatis JDBC操作數據庫的缺點 存在大量的冗余代碼。手工創建 Connection、Statement 等&#xff0c;效率低下。手工將結果集封裝成實體對象。查詢效率低&#xff0c;沒有對數據訪問進行優化。 Mybatis框架 簡介 MyBatis 本是 apache 的一個開源項目 iBatis, 2010年這個項目由…

imx6ull/linux應用編程學習(14) MQTT基礎知識

什么是mqtt&#xff1f; 與HTTP 協議一樣&#xff0c; MQTT 協議也是應用層協議&#xff0c;工作在 TCP/IP 四層模型中的最上層&#xff08;應用層&#xff09;&#xff0c;構建于 TCP/IP協議上。 MQTT 最大優點在于&#xff0c;可以以極少的代碼和有限的帶寬&#xff0c;為連接…

網絡資源模板--Android Studio 外賣點餐App

目錄 一、項目演示 二、項目測試環境 三、項目詳情 四、完整的項目源碼 原創外賣點餐&#xff1a;基于Android studio 實現外賣(點)訂餐系統 非原創奶茶點餐&#xff1a;網絡資源模板--基于 Android Studio 實現的奶茶點餐App報告 一、項目演示 網絡資源模板--基于Android …

在AvaotaA1全志T527開發板上使用AvaotaOS 部署 Docker 服務

Docker 是一個開源的應用容器引擎&#xff0c;讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中&#xff0c;然后發布到任何流行的 Linux或Windows操作系統的機器上&#xff0c;也可以實現虛擬化。容器是完全使用沙箱機制&#xff0c;相互之間不會有任何接口。 準備…

dolphinscheduler-springboot集成

springboot集成dolphinscheduler 說明 為了避免對DolphinScheduler產生過度依賴&#xff0c;實踐中通常不會全面采用其內置的所有任務節點類型。相反&#xff0c;會選擇性地利用DolphinScheduler的HTTP任務節點功能&#xff0c;以此作為工作流執行管理的橋梁&#xff0c;對接…

信息技術課上的紀律秘訣:營造有序學習環境

信息技術課是學生們探索數字世界的樂園&#xff0c;但同時也是課堂紀律管理的挑戰場。電腦、網絡、游戲等元素可能分散學生的注意力&#xff0c;影響學習效果。本文將分享一些有效的策略&#xff0c;幫助教師在信息技術課上維持課堂紀律&#xff0c;確保教學活動順利進行。 制…

幾何建模基礎-樣條曲線和樣條曲面介紹

1.概念介紹 1.1 樣條曲線的來源 樣條的英語單詞spline來源于可變形的樣條工具&#xff0c;那是一種在造船和工程制圖時用來畫出光滑形狀的工具&#xff1a;富有彈性的均勻細木條/金屬條/有機玻璃條&#xff0c;它圍繞著按指定位置放置的重物或者壓鐵做彈性彎曲&#xff0c;以…

JS實現一個簡單的模糊匹配

1、示例數據如下&#xff1a; // 示例數據 const data [ { name: ‘Alice’, age: 25 }, { name: ‘Bob’, age: 30 }, { name: ‘Charlie’, age: 35 }, { name: ‘David’, age: 40 }, { name: ‘Eve’, age: 45 } ]; 2、模糊匹配函數 // 模糊匹配函數 function fuzzyMatch(…

基于LangChain的RAG開發教程(二)

v1.0官方文檔&#xff1a;https://python.langchain.com/v0.1/docs/get_started/introduction/ 最新文檔&#xff1a;https://python.langchain.com/v0.2/docs/introduction/ LangChain是一個能夠利用大語言模型&#xff08;LLM&#xff0c;Large Language Model&#xff09;能…

植物大戰僵尸融合嫁接版 MAC 版本下載安裝詳細教程

繼植物大戰僵尸雜交版火了之后&#xff0c;PVZ改版可謂是百花齊放&#xff0c;最近又有一個非常好玩的模式被開發出來了&#xff0c;他們稱為《植物大戰僵尸融合嫁接版》 該版本并沒有對植物卡牌做改動&#xff0c;而是可以將任意兩種植物疊放到一起進行融合&#xff0c;產生新…

思路打開!騰訊造了10億個角色,驅動數據合成!7B模型效果打爆了

世界由形形色色的角色構成&#xff0c;每個角色都擁有獨特的知識、經驗、興趣、個性和職業&#xff0c;他們共同制造了豐富多元的知識與文化。 所謂術業有專攻&#xff0c;比如AI科學家專注于構建LLMs,醫務工作者們共建龐大的醫學知識庫&#xff0c;數學家們則偏愛數學公式與定…

lvgl 本地化

生成語言包文件&#xff1a; lv_i18n compile -t en-GB.yml -o ui 正則匹配中文 "[\u4e00-\u9fa5]" _("[\u4e00-\u9fa5]") https://www.cnblogs.com/jerryqi/p/9604828.html 查找多個漢字體的 ("[\u4e00-\u9fa5]"[)]) _($1) "科室:"…

數據分析與挖掘實戰案例-電商產品評論數據情感分析

數據分析與挖掘實戰案例-電商產品評論數據情感分析 文章目錄 數據分析與挖掘實戰案例-電商產品評論數據情感分析1. 背景與挖掘目標2. 分析方法與過程2.1 評論預處理1. 評論去重2. 數據清洗 2.2 評論分詞1. 分詞、詞性標注、去除停用詞2. 提取含名詞的評論3. 繪制詞云查看分詞效…

昇思25天學習打卡營第12天 | LLM原理和實踐:MindNLP ChatGLM-6B StreamChat

1. MindNLP ChatGLM-6B StreamChat 本案例基于MindNLP和ChatGLM-6B實現一個聊天應用。 ChatGLM-6B應該是國內第一個發布的可以在消費級顯卡上進行推理部署的國產開源大模型&#xff0c;2023年3月就發布了。我在23年6月份的時候就在自己的筆記本電腦上部署測試過&#xff0c;當…

UI自動化測試框架:PO 模式+數據驅動(超詳細)

1. PO 設計模式簡介 什么是 PO 模式&#xff1f; PO&#xff08;PageObject&#xff09;設計模式將某個頁面的所有元素對象定位和對元素對象的操作封裝成一個 Page 類&#xff0c;并以頁面為單位來寫測試用例&#xff0c;實現頁面對象和測試用例的分離。 PO 模式的設計思想與…

Python學習中進行條件判斷(if, else, elif)

條件判斷是編程中必不可少的一部分&#xff0c;它讓程序可以根據不同的條件執行不同的代碼塊。在Python中&#xff0c;主要使用if、elif和else語句來實現條件判斷。 基本語法 在Python中&#xff0c;條件判斷的基本語法如下&#xff1a; if condition:# 當condition為True時…

一篇讀懂128陷阱

128陷阱 128陷阱的概念包裝器類自動裝箱自動拆箱128陷阱 Intager源碼equals 128陷阱的概念 首先想要清楚什么是128陷阱&#xff0c;需要了解一些概念 包裝器類 包裝器類&#xff08;Wrapper classes&#xff09;是Java中的一組類&#xff0c;它們允許將基本數據類型&#xf…

NCCL 中的一些輔助debug 知識點

1&#xff0c;調試nccl 啟動kernel的方法 ncclLaunchKernel cuLaunchKernelEx ncclStrongStreamLaunchKernel cudaLaunchKernel ncclLaunchOneRank cudaLaunchKernel 在 nccl lib 中&#xff0c;不存在使用<<<grid, block,,>>> 這種類似方式啟…

算法題型歸類整理及同類題型解法思路總結(持續更新)

1、最優路線 通用思路 1、遞歸 #案例1-最優路測路線 題目描述 評估一個網絡的信號質量&#xff0c;其中一個做法是將網絡劃分為柵格&#xff0c;然后對每個柵格的信號質量計算。 路測的時候&#xff0c;希望選擇一條信號最好的路線&#xff08;彼此相連的柵格集合&#x…

12種增強Python代碼的函數式編程技術

前言 什么是函數式編程&#xff1f; 一句話總結&#xff1a;函數式編程(functional programming)是一種編程范式&#xff0c;之外還有面向對象&#xff08;OOP&#xff09;、面向過程、邏輯式編程等。 函數式編程是一種高度抽象的編程范式&#xff0c;它倡導使用純函數&#x…