面試經典150題(10-13)

leetcode 150道題 計劃花兩個月時候刷完,今天(第四天)完成了4道(10-13)150:
10. (45. 跳躍游戲 II)題目描述:

給定一個長度為 n 的 0 索引整數數組 nums。初始位置為 nums[0]。
每個元素 nums[i] 表示從索引 i 向前跳轉的最大長度。換句話說,如果你在 nums[i] 處,你可以跳轉到任意 nums[i + j] 處:
0 <= j <= nums[i] 
i + j < n
返回到達 nums[n - 1] 的最小跳躍次數。生成的測試用例可以到達 nums[n - 1]

第一版(這個和昨天是一樣的,就還是那樣,只是多加了一個計數器,我沒有看最優解,這個我能記住。。最優解記不住)

class Solution {public int jump(int[] nums) {// 和上一個跳躍 是一樣的//如果跳不到終點就盡可能跳到最遠int len=nums.length;int index=0;int res=0;while(index<len-1){int temp=nums[index]+index;if(temp>=len-1){return res+1;}int max=0;for(int i=index+1;i<=temp;i++){if(nums[i]==0){continue;}if(nums[i]+i>=max){index=i;max=nums[i]+i;}}// 這個應該可以不加判斷,題目應該會保證給的測試例子都可以跳到終點的。。if(max==0)return 0;res++;}return res;}
}
  1. (274. H 指數)題目描述:
給你一個整數數組 citations ,其中 citations[i] 表示研究者的第 i 篇論文被引用的次數。計算并返回該研究者的 h 指數。
根據維基百科上 h 指數的定義:h 代表“高引用次數” ,一名科研人員的 h 指數 是指他(她)至少發表了 h 篇論文,并且每篇論文 至少 被引用 h 次。如果 h 有多種可能的值,h 指數 是其中最大的那個。

這個題我真的做了至少四遍了,每次都做不出來,是真的理解不了他說的,然后我去查了維基百科上的,上面就有算法(我感覺這個好理解,最優的二分法感覺記不住。。):
可以按照如下方法確定某人的H指數:
1、將其發表的所有SCI論文按被引次數從高到低排序;
2、從前往后查找排序后的列表,只要當前的引用量大于當前的索引值,則H指數加1,最后得到的結果即為最終的H指數

第一版(按照這個維基百科算法去寫的)

class Solution {public int hIndex(int[] citations) {int hNum=0;int len=citations.length;Arrays.sort(citations);for(int i=len-1;i>=0;i--){if(citations[i]>len-i-1)hNum++;}return hNum;}
}
  1. (380. O(1) 時間插入、刪除和獲取隨機元素)題目描述:
實現RandomizedSet 類:
RandomizedSet() 初始化 RandomizedSet 對象
bool insert(int val) 當元素 val 不存在時,向集合中插入該項,并返回 true ;否則,返回 false 。
bool remove(int val) 當元素 val 存在時,從集合中移除該項,并返回 true ;否則,返回 false 。
int getRandom() 隨機返回現有集合中的一項(測試用例保證調用此方法時集合中至少存在一個元素)。每個元素應該有 相同的概率 被返回。
你必須實現類的所有函數,并滿足每個函數的 平均 時間復雜度為 O(1)

第一版(代碼比較長,就只放一版,這個確實人家在刪除時候處理很巧妙,值得學習)

class RandomizedSet {ArrayList<Integer> list;Random random;Map<Integer,Integer> map;public RandomizedSet() {list=new ArrayList<Integer>();random = new Random();map=new HashMap<Integer,Integer>();}public boolean insert(int val) {if(map.keySet().contains(val))return false;list.add(val);map.put(val,list.size()-1);return true;}public boolean remove(int val) {if(!map.keySet().contains(val))return false;int index=map.get(val);int lastValue=list.get(list.size()-1);map.put(lastValue,index);list.set(index,lastValue);list.remove(list.size()-1);map.remove(val);return true;}public int getRandom() {int size=list.size();return list.get(random.nextInt(size));}
}
  1. (238. 除自身以外數組的乘積)題目描述:
給你一個整數數組 nums,返回 數組 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘積 。
題目數據 保證 數組 nums之中任意元素的全部前綴元素和后綴的乘積都在  32 位 整數范圍內。
請 不要使用除法,且在 O(n) 時間復雜度內完成此題。

第一版(當然是暴力求解了,但是我加了一些優化以為是最優解,沒想到超時了。。)

class Solution {public int[] productExceptSelf(int[] nums) {int len=nums.length;int[] res=new int[len];for(int i=0;i<len;i++){if(nums[i]==0){// 其他為 0 res[i]=getNum(nums,i);return res;}}for(int i=0;i<len;i++){res[i]=getNum(nums,i);}return res;}public int getNum(int[] nums,int i){int temp=1;for(int j=0;j<nums.length;j++){if(j==i){continue;}if(nums[j]==0){temp=0;break;} temp*=nums[j];}return temp;}
}

第二版(看的解析,人家還是厲害啊!!)

class Solution {public int[] productExceptSelf(int[] nums) {int len=nums.length;int[] res=new int[len];int[] lAnswer=new int[len];int[] rAnswer=new int[len];lAnswer[0]=1;for(int i=1;i<len;i++){lAnswer[i]=nums[i-1]*lAnswer[i-1];}rAnswer[len-1]=1;for(int i=len-2;i>=0;i--){rAnswer[i]=nums[i+1]*rAnswer[i+1];}for(int i=0;i<len;i++){res[i]=lAnswer[i]*rAnswer[i];}return res;}
}

早日跳槽,跳槽!!!!!
真的現在待的公司感覺一點前途都沒有。。看不到未來啊。

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

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

相關文章

日本服務器:確保其穩定性的幾個要點

?  在租用日本服務器時&#xff0c;用戶們大多一定會關注它的穩定性&#xff0c;其實這些顧及都是正常的。畢竟&#xff0c;網站要想正常運行&#xff0c;保障服務器穩定是關鍵。本文將討論有關如何保障日本服務器穩定性的一些有用技巧&#xff0c;希望對您有所幫助。 1.注重…

Linux定時循環備份指定文件或文件夾,每月永久備份留1份

備份需求&#xff1a;每天完成一次指定文件的備份&#xff0c;壓縮后存放到指定目錄 問題&#xff1a;備份時間長了以后占用空間較大&#xff0c;浪費存儲&#xff0c;實際歷史備份意義不大&#xff0c;并不需要永久保存。但是如果直接刪除可能導致無法恢復歷史狀態的數據。 …

SpringBoot 啟動加載器解析

計時器介紹 啟動加載器實戰 實現方式1 實現CommandLineRunner接口重寫run方法通過Order進行排序 示例: Component Order(1) public class FirstCommandlineRunner implements CommandLineRunner {Overridepublic void run(String... args) throws Exception {System.out.pr…

一篇上手機器學習

一、上手機器學習的幾個階段 上手機器學習&#xff0c;第一步當然是看完我的這篇文章啦~&#xff0c;然后就按以下步驟來就可以了&#xff1a; 學習Python編程語言&#xff1a;Python是一種易于學習的高級編程語言&#xff0c;廣泛應用于機器學習領域。你可以通過學習Python的…

第三節、項目支付功能實戰-微信支付平臺接入流程,小程序賬號注冊、商戶注冊

簡介 本篇介紹小程序的注冊流程、商戶平臺的注冊流程、以及小程序和商戶平臺如何進行綁定。 微信小程序注冊 由于項目中使用了小程序進行支付&#xff0c;所以首先來注冊小程序。小程序注冊網站如下&#xff1a;小程序注冊地址 小程序賬號注冊 1、鏈接頁面點擊“前往注冊”…

carla安裝中的問題

1、carla carla安裝完后&#xff0c;需要使用python調用API去更換地圖&#xff0c;增加車輛等 使用Python調用API過程中可能會報錯&#xff1a; 報錯1&#xff1a;carla API&#xff08;Carla包&#xff09;版本不對 **解決方法&#xff1a;**需要將這個目錄下的三個文件拷…

數學建模算法

算法部分 1. 評價類模型2. TOPSIS3. 線性規劃4. 聚類分析5. 預測模型6. 拉伊達準則(對異常值進行剔除)7. 數據擬合8. 圖論代碼練習1. 模擬圓周率2. 斐波那契數列3. 四只鴨子落在一個圓中概率4. 方程2: y" uy y,初值y(0) 1,y(0) 0 算法講解 matlab代碼大全 1. 評價類模型…

【Python】修改pip 默認安裝位置

使用pip安裝的時候&#xff0c;一般是默認安裝在c盤里的。這樣做很容易會讓c盤的文件堆滿。那么如何讓pip安裝的包放入d盤呢&#xff1f; 查看pip默認安裝的位置 在cmd里輸入python -m site&#xff0c;這里可以看到&#xff0c;安裝包會默認下載到c盤中 從這里可以看到&am…

【Spring教程15】Spring框架實戰:詳解解讀AOP的工作流程和AOP的核心概念

目錄 1 AOP工作流程2 AOP核心概念 歡迎大家回到《 Java教程之Spring30天快速入門》&#xff0c;本教程所有示例均基于Maven實現&#xff0c;如果您對Maven還很陌生&#xff0c;請移步本人的博文《 如何在windows11下安裝Maven并配置以及 IDEA配置Maven環境》&#xff0c;本文…

如何使用cpolar+Inis在Ubuntu系統快速搭建本地博客網站公網可訪問

文章目錄 前言1. Inis博客網站搭建1.1. Inis博客網站下載和安裝1.2 Inis博客網站測試1.3 cpolar的安裝和注冊 2. 本地網頁發布2.1 Cpolar臨時數據隧道2.2 Cpolar穩定隧道&#xff08;云端設置&#xff09;2.3.Cpolar穩定隧道&#xff08;本地設置&#xff09; 3. 公網訪問測試總…

AspNetCore 中使用 Knife4jUI 更加友好的Swagger界面

&#x1f680;介紹 aspnetcore.knife4j是一個基于.NET Core平臺的Swagger UI庫&#xff0c;它提供了API文檔的生成和管理功能。這個庫的前身是swagger-bootstrap-ui&#xff0c;在Java項目中廣泛使用&#xff0c;由于其優秀的界面和易用性被許多開發者所推崇。現在&#xff0c…

LV.13 D2 開發板啟動流程 學習筆記

一、開發板啟動過程 EMMC&#xff1a;相當于電腦的外存&#xff0c;斷電不丟失 開發板上電后首先運行SOC內部iROM中固化的代碼(BL0)&#xff0c;這段代碼先對基本的軟硬件環境(時鐘等...)進行初始化&#xff0c;然后再檢測撥碼開關位置獲取啟動方式&#xff0c;然后再將對應存儲…

基于SSM+MySQL學生宿舍管理系統的設計與實現(源碼+數據庫+文檔)

摘 要 近年來&#xff0c;隨著計算機技術的不斷發展和運用&#xff0c;許多實際問題都得到了較好地解決。隨著現代社會對企業經營的需求日益增長&#xff0c;企業的無紙辦公也逐漸得到了推廣。本學生宿舍管理系統的設計開發&#xff0c;目標就是解決宿舍管理復雜的人為管理&a…

PHP變量用{}的使用方法

{} 可以將變量名稱作為一個整體使用 "666666".$id."888888"; //可以簡化為如下 "666666{$id}888888"; //當然$id也可以用$ids[$id] 參考&#xff1a; PHP 大括號{} 的使用_php 函數放在{}-CSDN博客

[23] Self-conditioned Image Generation via Generating Representations

[paper | code] 用生成對象本身作為控制信號&#xff0c;實現無條件圖像生成。訓練階段。Step1&#xff1a;用預訓練模型&#xff08;例如&#xff1a;Moco v3&#xff09;提取生成對象的特征編碼&#xff1b;Step2&#xff1a;基于特征編碼&#xff0c;訓練一個擴散模型RDM&a…

pycharm手動安裝包

1.下載對應的包 TTS PyPI 2.手動解壓&#xff0c;找到文件放到pycharm對應項目的lib文件夾中 以TTS包為例&#xff0c;找到下載并解壓的包中的2個文件&#xff0c;一個名稱一個info結尾 3.放到項目的lib文件夾中 eg&#xff1a;路徑&#xff1b;C:\doc\myProject\speaker\venv…

前端知識(十四)——淺談用戶體驗測試的主要功能

用戶體驗(User Experience&#xff0c;簡稱UX)在現代軟件和產品開發中變得愈發重要。為了確保產品能夠滿足用戶期望&#xff0c;提高用戶滿意度&#xff0c;用戶體驗測試成為不可或缺的環節。本文將詳細探討用戶體驗測試的主要功能&#xff0c;以及它在產品開發過程中的重要性 …

Android View的 getHeight 和 getMeasuredHeight 的區別

前言 先簡單復習一下Android View 的 繪制順序&#xff1a; 1、onMeasure&#xff08;測量&#xff09;&#xff0c;先根據構造器傳進來的LayoutParams&#xff08;布局參數&#xff09;&#xff0c;測量view寬高。 2、onLayout&#xff08;布局&#xff09;&#xff0c;再根…

SQL進階 | 自連接

概述 SQL的自連接是指在一個SQL表中&#xff0c;使用自身表格中的實例進行聯接并查詢的操作。自連接通常使用別名來標識一個表格&#xff0c;在自連接中&#xff0c;表格被視為兩個不同的表格&#xff0c;并分別用不同的別名來標識。然后&#xff0c;在WHERE子句中使用這些別名…

oracle異常:ORA-03297:文件包含在請求的 RESIZE 值以外使用的數據

出現這個問題&#xff0c;主要是在對表空間擴容的時候&#xff0c;擴容的大小<實際數據文件大小 1、擴容的語句 alter database datafile D:\APP\ADMINISTRATOR\ORADATA\ORCL\USER.DBF resize 2G; 2、若何確定擴容大小是否比實際文件大 根據路徑找到文件&#xff0c;查看…