【LeetCode 隨筆】面試經典 150 題【中等+困難】持續更新中。。。

文章目錄

    • 189. 輪轉數組
    • 122. 買賣股票的最佳時機 II
    • 55. 跳躍游戲
    • 45. 跳躍游戲 II
    • 274. H 指數

🌈你好呀!我是 山頂風景獨好
💝歡迎來到我的博客,很高興能夠在這里和您見面!
💝希望您在這里可以感受到一份輕松愉快的氛圍!
💝不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。
🚀 歡迎一起踏上探險之旅,挖掘無限可能,共同成長!

189. 輪轉數組

給定一個整數數組 nums,將數組中的元素向右輪轉 k 個位置,其中 k 是非負數。

思路如下:

  • 首先對整個數組實行翻轉,這樣子原數組中需要翻轉的子數組,就會跑到數組最前面。
  • 這時候,從 kkk 處分隔數組,左右兩數組,各自進行翻轉即可。
class Solution {  // 旋轉數組的方法  public void rotate(int[] nums, int k) {  // 如果k大于數組長度,則通過取模操作減少k的值,因為輪轉長度超過數組長度是無效的  k %= nums.length;  // 首先將整個數組反轉  reverse(nums, 0, nums.length - 1);  // 然后將前k個元素反轉,得到原本的后k個元素在正確位置上的結果  reverse(nums, 0, k - 1);  // 最后將剩下的元素(即原數組中的前n-k個元素)反轉,得到最終的輪轉結果  reverse(nums, k, nums.length - 1);  }  // 反轉數組指定區間內元素的方法  // 參數start表示區間的起始索引,end表示區間的結束索引(不包含end)  public void reverse(int[] nums, int start, int end) {  // 當起始索引小于結束索引時,進行反轉操作  while (start < end) {  // 交換start和end索引處的元素  int temp = nums[start];  nums[start] = nums[end];  nums[end] = temp;  // 起始索引和結束索引分別向中間移動  start += 1;  end -= 1;  }  }  
}

122. 買賣股票的最佳時機 II

  • 給你一個整數數組 prices ,其中 prices[i] 表示某支股票第 i 天的價格。
  • 在每一天,你可以決定是否購買和/或出售股票。你在任何時候 最多 只能持有 一股 股票。你也可以先購買,然后在 同一天 出售。
  • 返回 你能獲得的 最大 利潤 。

思路如下:
該問題的核心是在給定的股票價格數組中,找出可以執行多次買賣操作(即同一天內可以買入并賣出)以獲得最大利潤的方式。由于可以多次買賣,所以只要股票的價格在連續兩天中是上漲的,就可以在第一天買入并在第二天賣出以獲取利潤。

class Solution {  public int maxProfit(int[] prices) {  // 初始化最大利潤為0  int res = 0;  // 遍歷價格數組,從索引1開始(因為我們需要比較當前價格與前一天的價格)  for (int i = 1; i < prices.length; i++) {  // 如果當前價格比前一天的價格高,說明我們可以買入前一天的價格并在今天賣出以獲取利潤  if (prices[i] - prices[i - 1] > 0) {  // 將這個利潤累加到最大利潤中  res += prices[i] - prices[i - 1];  }  }  // 返回最大利潤  return res;  }  
}

55. 跳躍游戲

  • 給你一個非負整數數組 nums ,你最初位于數組的 第一個下標 。數組中的每個元素代表你在該位置可以跳躍的最大長度。
  • 判斷你是否能夠到達最后一個下標,如果可以,返回 true ;否則,返回 false 。
class Solution {  public static boolean canJump(int[] nums) {  // 初始化一個變量k,用于表示當前能夠到達的最遠位置  int k = 0;  // 遍歷數組中的每一個元素  for (int i = 0; i < nums.length; i++) {  // 如果當前位置i已經超過了能夠到達的最遠位置k,那么就無法繼續跳躍,返回false  if (i > k) return false;  // 更新能夠到達的最遠位置k,取當前能夠到達的最遠位置k和當前位置i加上當前位置能夠跳躍的最大長度nums[i]的較大值  k = Math.max(k, i + nums[i]);  // 如果在遍歷過程中,k能夠到達或超過數組的最后一個位置,那么說明能夠到達最后一個位置,但此處不需要立即返回true  // 因為我們需要遍歷完整個數組,以確保沒有其他位置無法到達  }  // 如果遍歷完整個數組都沒有返回false,那么說明能夠到達最后一個位置,返回true  return true;  }  
}

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 length = nums.length;  // end表示當前步跳躍可以到達的最遠位置  int end = 0;  // maxPosition表示從當前位置起跳能夠到達的最遠位置  int maxPosition = 0;   // steps記錄跳躍的次數  int steps = 0;  // 遍歷數組,除了最后一個位置(因為最后一個位置不需要跳躍到達)  for (int i = 0; i < length - 1; i++) {  // 更新從當前位置起跳能夠到達的最遠位置  maxPosition = Math.max(maxPosition, i + nums[i]);   // 如果當前位置i是當前步跳躍可以到達的最遠位置  if (i == end) {  // 更新當前步跳躍可以到達的最遠位置為maxPosition  end = maxPosition;  // 跳躍次數加1  steps++;  }  }  // 當遍歷完數組后,steps就是到達數組最后一個位置所需的最少跳躍次數  return steps;  }  
}

274. H 指數

  • 給你一個整數數組 citations ,其中 citations[i] 表示研究者的第 i 篇論文被引用的次數。計算并返回該研究者的 h 指數。
  • 根據維基百科上 h 指數的定義:h 代表“高引用次數” ,一名科研人員的 h 指數 是指他(她)至少發表了 h 篇論文,并且 至少 有 h 篇論文被引用次數大于等于 h 。如果 h 有多種可能的值,h 指數 是其中最大的那個。

示例 1:

  • 輸入:citations = [3,0,6,1,5]
  • 輸出:3
  • 解釋:給定數組表示研究者總共有 5 篇論文,每篇論文相應的被引用了 3, 0, 6, 1, 5 次。
    由于研究者有 3 篇論文每篇 至少 被引用了 3 次,其余兩篇論文每篇被引用 不多于 3 次,所以她的 h 指數是 3。

示例 2:

  • 輸入:citations = [1,3,1]
  • 輸出:1
class Solution {  public int hIndex(int[] citations) {  // 初始化左右指針,左指針指向數組開始,右指針指向數組末尾的下一個位置(因為數組索引是從0開始的)  int left = 0, right = citations.length;  // mid 用于存儲二分查找的中間索引  int mid = 0, cnt = 0;  // 當左指針小于右指針時,進行二分查找  while (left < right) {  // 計算中間索引,注意這里使用 (left + right + 1) >> 1 而不是 (left + right) / 2  // 這樣做是為了在 right - left 為奇數時,mid 偏向右側,防止在 left 和 right 相鄰時陷入死循環  mid = (left + right + 1) >> 1;  cnt = 0; // 重置計數,用于統計被引用次數大于等于 mid 的論文數量  // 遍歷數組,統計被引用次數大于等于 mid 的論文數量  for (int i = 0; i < citations.length; i++) {  if (citations[i] >= mid) {  cnt++;  }  }  // 如果被引用次數大于等于 mid 的論文數量大于等于 mid,則 h 指數至少為 mid  // 更新 left 指針為 mid,繼續在 [mid, right) 范圍內查找可能的更大的 h 指數  if (cnt >= mid) {  left = mid;  // 否則,h 指數一定小于 mid,更新 right 指針為 mid - 1,繼續在 [left, mid - 1] 范圍內查找  } else {  right = mid - 1;  }  }  // 循環結束后,left 和 right 指針重合,left(或 right)就是要求的 h 指數  return left;  }  
}

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

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

相關文章

機器學習云環境搭建

在 https://support.huaweicloud.com/browsertg-obs/obs_03_1003.html 下載對應版本的 OBS Broswer 軟件&#xff0c;如圖&#xff0c;紅框內的為安裝文件&#xff0c;藍色框內的為對應安裝文件的校驗文件&#xff08;無需下載&#xff09; 以 64 位機為例&#xff0c;下載完…

景源暢信電商:抖店需要的成本高嗎?

在數字化時代的浪潮中&#xff0c;短視頻平臺迅速崛起&#xff0c;成為連接用戶與商家的新橋梁。抖音作為其中的佼佼者&#xff0c;不僅改變了人們的娛樂方式&#xff0c;也催生了新型的電商模式——抖店。許多人好奇&#xff0c;入駐這樣一個充滿活力的平臺&#xff0c;需要承…

618知識狂歡,挑本好書,點亮智慧生活!

618精選編程書單&#xff1a;提升你的代碼力 一年一度的618又到啦&#xff01;今年的618就不要亂買啦&#xff0c;衣服買多了會被淘汰&#xff0c;電子產品買多了會過時&#xff0c;零食買多了會增肥&#xff0c;最后怎么看都不劃算。可是如果你購買知識&#xff0c;堅持閱讀&a…

第N2周:Embeddingbag與Embedding詳解

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習記錄博客&#x1f356; 原作者&#xff1a;K同學啊 | 接輔導、項目定制&#x1f680; 文章來源&#xff1a;K同學的學習圈子 目錄 什么是詞嵌入&#xff1f; Embedding與EmbeddingBag詳解 Embedding Embeddi…

代碼隨想錄算法訓練營第十七天|LeetCode110 平衡二叉樹、LeetCode257 二叉樹的所有路徑

題1&#xff1a; 指路&#xff1a;LeetCode110 平衡二叉樹 思路與代碼&#xff1a; 左右子樹的高度差小于等于1。對于這個題&#xff0c;遞歸比迭代方便太多&#xff0c;我也想過迭代&#xff0c;但是我沒有寫出來&#xff0c;大家可以自己試一下。遞歸代碼如下&#xff1a;…

如何為ChatGPT編寫有效的提示詞:軟件開發者的指南

作為一名軟件開發者&#xff0c;特別是使用Vue進行開發的開發者&#xff0c;與ChatGPT等AI助手高效互動&#xff0c;可以極大地提升你的開發效率。本文將深入探討如何編寫有效的提示詞&#xff0c;以便從ChatGPT中獲取有用的信息和幫助。 1. 明確目標 在編寫提示詞之前&#…

后端之路第二站(正片)——SprintBoot之:分層解耦

很抽象&#xff0c;我自己也不好理解&#xff0c;僅作為一個前端轉后端的個人理解 一、先解釋一個案例&#xff0c;以這個案例來分析“三層架構” 這里我先解釋一下黑馬程序員里的這個案例&#xff0c;兄弟們看視頻的可以跳過這節課&#xff1a;Day05-08. 請求響應-響應-案例_…

【webrtc】m98:Call的創建及Call對音頻接收處理

call中多個流共享相同的輔助組件 這幾個是與外部共用的 線程傳輸send控制module 線程任務隊列工廠call的輔助組件中各種統計以及接收測的cc是自己創建的 call自己的多個輔助組件是外部傳遞來的 call 創建多個接收流 這里用一個set 來保存所有指針,并沒有要map的意思:

【因果推斷從入門到精通二】隨機實驗3

目錄 檢驗無因果效應假說 硬幣投擲的特殊性何在&#xff1f; 檢驗無因果效應假說 無因果效應假說認為&#xff0c;有些人存活&#xff0c;有些人死亡&#xff0c;但接受mAb114治療而不是ZMapp與此無關。在174例接受mAb14治療的患者中&#xff0c;113/17464.9%存活了28天&…

【MySQL精通之路】InnoDB(6)-磁盤結構

主要博客&#xff1a; 【MySQL精通之路】InnoDB存儲引擎-CSDN博客 1 表 2 索引 【MySQL精通之路】InnoDB(6)-磁盤結構(2)-索引-CSDN博客 3 表空間 【MySQL精通之路】InnoDB(6)-磁盤結構(3)-表空間-CSDN博客 4 雙寫緩沖區 【MySQL精通之路】InnoDB(6)-磁盤結構(4)-雙寫緩沖…

修改MySQL root用戶密碼

ALTER USER ‘root’‘localhost’ IDENTIFIED BY ‘new_password’; ALTER USER ‘root’‘%’ IDENTIFIED BY ‘new_password’; 》 SET GLOBAL read_only OFF; select * from mysql.user;

Java入門基礎學習筆記47——ArrayList

什么是集合呢&#xff1f; 集合是一種容器&#xff0c;用來裝數據的&#xff0c;類似數組。 有數組&#xff0c;為什么還要學習集合呢&#xff1f; 數組定義完成并啟動后&#xff0c;長度就固定了。 而集合是大小可變&#xff0c;開發中用的最多的。 集合的特點&#xff1a;大…

匯聚榮科技有限公司優點有哪些?

在當今快速發展的科技時代&#xff0c;企業之間的競爭愈發激烈。作為一家專注于科技創新與研發的公司&#xff0c;匯聚榮科技有限公司憑借其卓越的技術實力和創新能力&#xff0c;在業界樹立了良好的口碑。那么&#xff0c;匯聚榮科技有限公司究竟有哪些優點呢?接下來&#xf…

C++利用TinyXML讀取XML文件

TinyXML是什么&#xff1f; TinyXML是一個輕量級的C XML解析器&#xff0c;它提供了一種簡單的方法來解析和操作XML文檔。TinyXML被設計為易于使用和集成到C項目中&#xff0c;并且非常適合處理小型XML文件。 以下是TinyXML的一些主要特點和優點&#xff1a; 輕量級: T…

OSPF問題

.ospf 選路 域內 --- 1類&#xff0c;2類LSA 域間 --- 3類LSA 域外 --- 5類&#xff0c;7類LSA --- 根據開銷值的計算規則不同&#xff0c;還分為類型1和類型2 ospf 防環機制 區域內防環&#xff1a;在同一OSPF區域內&#xff0c;所有路由器通過交換鏈路狀態通告&#xff…

VUE面試題(3)--vue常見面試題

1.vue優點 低耦合。視圖(View)可以獨立于Model變化和修改,一個ViewModel可以綁定到不同的"View"上,當View變化的時候Model可以不變,當Model變化的時候View也可以不變。 可重用性。你可以把一些視圖邏輯放在一個ViewModel里面,讓很多view重用這段視圖邏輯。 …

226.翻轉二叉樹

翻轉一棵二叉樹。 思路&#xff1a; 指針做交換 用遞歸&#xff08;前序or后序&#xff0c;中序不行&#xff09; 前序&#xff1a;中左右 遍歷到“中”的時候&#xff0c;交換它的左右孩子 然后分別對它的左孩子和右孩子使用“交換函數”&#xff08;定義的&#xff09;&a…

【網絡版本計算器的實現】

本章重點 理解應用層的作用, 初識HTTP協議理解傳輸層的作用, 深入理解TCP的各項特性和機制對整個TCP/IP協議有系統的理解對TCP/IP協議體系下的其他重要協議和技術有一定的了解學會使用一些分析網絡問題的工具和方法 ?注意!! 注意!! 注意!! 本課是網絡編程的理論基礎.是一個服務…

零基礎學Java第二十二天之迭代器 Iterator

迭代器 Iterator 的理解和相關集合 使用 1、理解 迭代器&#xff08;Iterator&#xff09;是設計模式中的一種&#xff0c;它允許程序員遍歷容器&#xff08;例如列表、集合等&#xff09;中的元素&#xff0c;而無需了解容器底層的實現細節。在編程中&#xff0c;迭代器提供了…

?第18章:JDK8-17新特性

1. 新特性概述 > 角度1&#xff1a;新的語法規則 &#xff08;多關注&#xff09;比如&#xff1a;lambda表達式、enum、annotation、自動拆箱裝箱、接口中的默認方法和靜態方法、switch表達式、record等> 角度2&#xff1a;增加、過時、刪除API比如&#xff1a;新的日期…