騰訊2025年校招筆試真題手撕(三)

一、題目

今天正在進行賽車車隊選拔,每一輛賽車都有一個不可以改變的速度。現在需要選取速度差距在10以內的車隊(車隊中速度的最大值減去最小值不大于10),用于迎賓。車隊的選拔按照的是人越多越好的原則,給出n輛車的速度,你能選出滿足條件的最多車輛的車隊嗎。 輸入描述 第一行一個數字n(1<=n<=100000)。 接下來一行n個整數,speed[i] 表示第i輛車的速度為speed(i)(1<=speed[i]<=109)。 輸出描述 輸出一行,最大車輛數目。

二、分析

在這個問題中,我們的目標是從給定的賽車速度中找到一個滿足速度差距不超過10的最大車隊。首先,需要理解題目中的輸入和輸出要求。輸入的第一行是一個整數n,表示賽車的數量。接下來的一行中有n個整數,分別代表每輛賽車的速度。我們的任務是找出這些賽車中一個最大的子集,使得這個子集中速度的最大值和最小值之差不超過10,并輸出這個最大子集的大小。

為了有效地解決這個問題,可以采用排序和滑動窗口技術相結合的方法。首先,將所有賽車的速度進行排序。排序后,我們可以利用滑動窗口來維護一個滿足條件的區間。滑動窗口的左側代表當前區間的起始位置,右側代表區間的結束位置。窗口內的所有速度都在一個有效的范圍內,即最大值和最小值的差不超過10。在排序后的速度列表中,最大值和最小值分別對應于窗口的右端和左端。

在滑動窗口的過程中,右指針不斷向右移動以擴展窗口。當窗口內的最大速度和最小速度的差超過10時,左指針向右移動以縮小窗口的大小,確保窗口內的速度差不超過10。在每次調整窗口的大小時,記錄下當前窗口的大小,并與歷史最大值進行比較,以便找出滿足條件的最大車隊的大小。這種方法的優勢在于它不需要遍歷所有可能的子集,而是通過線性掃描來找到最優解,從而大大提高了效率。在整個過程中,排序操作的時間復雜度為O(n log n),而滑動窗口的遍歷操作為O(n)。因此,整個算法的時間復雜度為O(n log n),這使得該算法能夠在合理的時間內處理較大的輸入規模。

三、代碼

這段代碼首先從標準輸入讀取整個輸入,然后將輸入的字符串分割成一個列表。第一個元素被轉換為數整以表示賽車的數量n,隨后的n個元素被轉換為整數列表speed。對speed進行排序后,初始化左指針left為0,max_count為1。然后,通過一個循環遍歷速度列表,使用右指針right向右擴展窗口,同時檢查窗口內的速度差是否超過10。如果超過,則移動左指針left以縮小窗口,確保窗口內的速度差不超過10。在每次調整窗口的大小時,比較當前窗口的大小和歷史最大值,并更新max_count。最后,輸出max_count作為結果。

def main():import sysinput = sys.stdin.read().split()n = int(input[0])speed = list(map(int, input[1:n+1]))speed.sort()max_count = 1left = 0for right in range(n):while speed[right] - speed[left] > 10:left += 1current_length = right - left + 1if current_length > max_count:max_count = current_lengthprint(max_count)if __name__ == "__main__":main()
  1. 讀取輸入:

    • 使用 sys.stdin.read() 讀取整個輸入,并將其分割成一個列表。

    • 第一個元素是整數 n,表示賽車的數量。

    • 接下來的 n 個元素是賽車的速度,存儲在列表 speed 中。

  2. 排序:

    • 對速度列表進行排序,以便可以使用滑動窗口技術來查找滿足條件的車隊。

  3. 初始化:

    • max_count 用于記錄找到的最大車隊大小,初始化為1(因為至少有一輛車可以組成一個車隊)。

    • left 是滑動窗口的左指針,初始化為0。

  4. 滑動窗口:

    • 使用右指針 right 遍歷速度數組。

    • 對于每個右指針位置,檢查當前窗口內的速度差是否超過10。

    • 如果速度差超過10,移動左指針以縮小窗口,直到速度差滿足條件。

    • 計算當前窗口的大小,并更新 max_count5。

. 輸出結果:

  • 最后,輸出 max_count,即找到的最大車隊大小。

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

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

相關文章

《三維點如何映射到圖像像素?——相機投影模型詳解》

引言 以三維投影介紹大多比較分散&#xff0c;不少小伙伴再面對諸多的坐標系轉換中容易弄混&#xff0c;特別是再寫代碼的時候可能搞錯&#xff0c;所有這篇文章幫大家完整的梳理3D視覺中的投影變換的全流程&#xff0c;一文弄清楚這個過程&#xff0c;幫助大家搞清坐標系轉換…

Ini配置文件讀寫,增加備注功能

1.增加備注項寫入 例: #節點備注 [A] #項備注 bbb1 ccc2 [B] bbb1 IniConfig2 ic new IniConfig2(); //首次寫入 if (!ic.CanRead()) { ic.AddSectionReMarke("A", "節點備注"); ic.SetValue("A&qu…

OpenHarmony 5.0中狀態欄添加以太網狀態欄圖標以及功能實現

目錄 1.前置條件 2.方案 1.前置條件 首先以太網接口是有問題的,如下按照如下流程將以太網接口進行修復 OpenHarmony 以太網卡熱插拔事件接口無效-CSDN博客 然后上述的接口可以了就可以通過這個接口獲取以太網是否連接狀態 要注意wifi連接的干擾和預置虛擬網口干擾 2.方案…

RNN GRU LSTM 模型理解

一、RNN 1. 在RNN中&#xff0c; 2. RNN是一個序列模型&#xff0c;與非序列模型不同&#xff0c;序列中的元素互相影響&#xff1a; 是由 計算得來的。 在前向傳播中&#xff1a; 用于計算 和 用于計算 和 因此&#xff0c;當進行反向鏈式法則求導時候&#xf…

多路徑傳輸(比如 MPTCP)控制實時突發

實時突發很難控制&#xff0c;因為 “實時” 和 “突發” 相互斥。實時要求避免排隊&#xff0c;而突發必然要排隊&#xff0c;最終的解決方案都指向找一個公說公有理&#xff0c;婆說婆有理的中間點&#xff0c;這并沒解決問題&#xff0c;只是權衡了問題。 這種局部解決問題的…

函數式編程思想詳解

函數式編程思想詳解 1. 核心概念 不可變數據 (Immutable Data) 數據一旦創建&#xff0c;不可修改。任何操作均生成新數據&#xff0c;而非修改原數據。 優點&#xff1a;避免副作用&#xff0c;提升并發安全&#xff0c;簡化調試。 Java實現&#xff1a;使用final字段、不可變…

iOS 主要版本發布歷史

截至 2025 年 5 月&#xff0c;iOS 的最新正式版本是 iOS 18&#xff0c;于 2024 年 9 月 16 日 正式發布。此前的 iOS 17 于 2023 年 9 月 18 日 發布&#xff0c;并在 2024 年被 iOS 18 取代。(維基百科) &#x1f4f1; iOS 主要版本發布歷史 以下是 iOS 各主要版本的發布日…

矩陣詳解:線性代數在AI大模型中的核心支柱

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家、CSDN平臺優質創作者&#xff0c;高級開發工程師&#xff0c;數學專業&#xff0c;10年以上C/C, C#, Java等多種編程語言開發經驗&#xff0c;擁有高級工程師證書&#xff1b;擅長C/C、C#等開發語言&#xff0c;熟悉Java常用開…

基于51單片機和8X8點陣屏、獨立按鍵的飛行躲閃類小游戲

目錄 系列文章目錄前言一、效果展示二、原理分析三、各模塊代碼1、8X8點陣屏2、獨立按鍵3、定時器04、定時器1 四、主函數總結 系列文章目錄 前言 用的是普中A2開發板。 【單片機】STC89C52RC 【頻率】12T11.0592MHz 【外設】8X8點陣屏、獨立按鍵 效果查看/操作演示&#xff…

區塊鏈可投會議CCF C--APSEC 2025 截止7.13 附錄用率

Conference&#xff1a;32nd Asia-Pacific Software Engineering Conference (APSEC 2025) CCF level&#xff1a;CCF C Categories&#xff1a;軟件工程/系統軟件/程序設計語言 Year&#xff1a;2025 Conference time&#xff1a;December 2-5, 2025 in Macao SAR, China …

pdf圖片導出(Visio\Origin\PPT)

一、Visio 導入pdf格式圖片 1. 設計->大小&#xff0c;適應繪圖。 2. 文件->導出&#xff0c;導出為pdf格式。 上面兩部即可得到只包含圖的部分的pdf格式。 如果出現的有默認白邊&#xff0c;可以通過以下方式設置&#xff1a; 1. 文件->選項->自定義功能區->…

vector的實現

介紹 1. 本質與存儲結構 動態數組實現&#xff1a;vector 本質是動態分配的數組&#xff0c;采用連續內存空間存儲元素&#xff0c;支持下標訪問&#xff08;如 vec[i]&#xff09;&#xff0c;訪問效率與普通數組一致&#xff08;時間復雜度 O (1)&#xff09;。動態擴容機制&…

【Linux筆記】防火墻firewall與相關實驗(iptables、firewall-cmd、firewalld)

一、概念 1、防火墻firewall Linux 防火墻用于控制進出系統的網絡流量&#xff0c;保護系統免受未授權訪問。常見的防火墻工具包括 iptables、nftables、UFW 和 firewalld。 防火墻類型 包過濾防火墻&#xff1a;基于網絡層&#xff08;IP、端口、協議&#xff09;過濾流量&a…

el-date-picker 前端時間范圍選擇器

控制臺參數&#xff1a; 前端代碼&#xff1a;用數組去接受&#xff0c;同時用 value-format"YYYY-MM-DD" 格式化值為&#xff1a;年月日格式 <!-- 查詢區域 --><transition name"fade"><div class"search" v-show"showSe…

在 macOS 上安裝 jenv 管理 JDK 版本

在 macOS 上安裝 jenv 并管理 JDK 版本 在開發 Java 應用程序時&#xff0c;你可能需要在不同的項目中使用不同版本的 JDK。手動切換 JDK 版本可能會很繁瑣&#xff0c;但幸運的是&#xff0c;有一個工具可以簡化這個過程&#xff1a;jenv。jenv 是一個流行的 Java 版本管理工…

2025年全國青少年信息素養大賽復賽C++集訓(16):吃糖果2(題目及解析)

2025年全國青少年信息素養大賽復賽C集訓&#xff08;16&#xff09;&#xff1a;吃糖果2&#xff08;題目及解析&#xff09; 題目描述 現有n(50 > n > 0)個糖果,每天只能吃2個或者3個&#xff0c;請計算共有多少種不同的吃法吃完糖果。 時間限制&#xff1a;1000 內存…

ARM筆記-嵌入式系統基礎

第一章 嵌入式系統基礎 1.1嵌入式系統簡介 1.1.1嵌入式系統定義 嵌入式系統定義&#xff1a; 嵌入式系統是以應用為中心&#xff0c;以計算機技術為基礎&#xff0c;軟硬件可剪裁&#xff0c;對功能、可靠性、成本、體積、功耗等有嚴格要求的專用計算機系統 ------Any devic…

大語言模型(LLM)入門項目推薦

推薦大語言模型(LLM)的入門項目 TiaoYu-1。 https://github.com/tiaoyu1122/TiaoYu-1 項目優點&#xff1a; 幾乎每一行代碼(一些重復的代碼除外)都添加了注釋&#xff0c;詳細介紹了代碼的作用&#xff0c;方便閱讀與理解。基本上覆蓋了常見 LLM 模型的全部訓練流程&#x…

Linux里more 和 less的區別

在 Linux/Unix 系統中&#xff0c;more 和 less 都是用于分頁查看文本文件的命令&#xff0c;但 less 是 more 的增強版&#xff0c;功能更強大。以下是它們的核心區別和用法對比&#xff1a; 1. 基礎功能對比 特性moreless&#xff08;更強大&#xff09;向前翻頁? 僅支持向…

基于PDF流式渲染的Word文檔在線預覽技術

一、背景介紹 在系統開發中&#xff0c;實現在線文檔預覽與編輯功能是許多項目的核心需求&#xff0c;但在實際的開發過程中&#xff0c;我們經常會面臨以下難點&#xff1a; 1&#xff09;格式兼容性問題&#xff1a;瀏覽器原生不支持解析Word二進制格式&#xff0c;直接渲染會…