設計回圈佇列
|
設計你的回圈佇列實作, 回圈佇列是一種線性資料結構,其操作表現基于 FIFO(先進先出)原則并且隊尾被連接在隊首之后以形成一個回圈,它也被稱為“環形緩沖器”, 回圈佇列的一個好處是我們可以利用這個佇列之前用過的空間,在一個普通佇列里,一旦一個佇列滿了,我們就不能插入下一個元素,即使在佇列前面仍有空間,但是使用回圈佇列,我們能使用這些空間去存盤新的值, 你的實作應該支持如下操作: MyCircularQueue(k): 構造器,設定佇列長度為 k , 示例: MyCircularQueue circularQueue = new MyCircularQueue(3); // 設定長度為 3 提示: 所有的值都在 0 至 1000 的范圍內; |
資料流中的移動平均值
|
給定一個整數資料流和一個視窗大小,根據該滑動視窗的大小,計算其所有整數的移動平均值, 實作 MovingAverage 類: MovingAverage(int size) 用視窗大小 size 初始化物件, 示例: 輸入: 解釋: 提示: 1 <= size <= 1000 |
墻與門
|
你被給定一個 m × n 的二維網格 rooms ,網格中有以下三種可能的初始化值: -1 表示墻或是障礙物
示例 1:
輸入:rooms = [[-1]] 輸入:rooms = [[2147483647]] 輸入:rooms = [[0]] 提示: m == rooms.length |
島嶼數量
|
給你一個由 '1'(陸地)和 '0'(水)組成的的二維網格,請你計算網格中島嶼的數量, 島嶼總是被水包圍,并且每座島嶼只能由水平方向和/或豎直方向上相鄰的陸地連接形成, 此外,你可以假設該網格的四條邊均被水包圍,
示例 1: 輸入:grid = [ 輸入:grid = [ 提示: m == grid.length |
打開轉盤鎖
|
你有一個帶有四個圓形撥輪的轉盤鎖,每個撥輪都有10個數字: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ,每個撥輪可以自由旋轉:例如把 '9' 變為 '0','0' 變為 '9' ,每次旋轉都只能旋轉一個撥輪的一位數字, 鎖的初始數字為 '0000' ,一個代表四個撥輪的數字的字串, 串列 deadends 包含了一組死亡數字,一旦撥輪的數字和串列里的任何一個元素相同,這個鎖將會被永久鎖定,無法再被旋轉, 字串 target 代表可以解鎖的數字,你需要給出解鎖需要的最小旋轉次數,如果無論如何不能解鎖,回傳 -1 ,
示例 1: 輸入:deadends = ["0201","0101","0102","1212","2002"], target = "0202" 輸入: deadends = ["8888"], target = "0009" 輸入: deadends = ["8887","8889","8878","8898","8788","8988","7888","9888"], target = "8888" 輸入: deadends = ["0000"], target = "8888" 提示: 1 <= deadends.length <= 500 |
完全平方數
|
給定正整數 n,找到若干個完全平方數(比如 1, 4, 9, 16, ...)使得它們的和等于 n,你需要讓組成和的完全平方數的個數最少, 給你一個整數 n ,回傳和為 n 的完全平方數的 最少數量 , 完全平方數 是一個整數,其值等于另一個整數的平方;換句話說,其值等于一個整數自乘的積,例如,1、4、9 和 16 都是完全平方數,而 3 和 11 不是,
示例 1: 輸入:n = 12 輸入:n = 13 1 <= n <= 104 |
最小堆疊
|
設計一個支持 push ,pop ,top 操作,并能在常數時間內檢索到最小元素的堆疊, push(x) —— 將元素 x 推入堆疊中, 示例: 輸入: 輸出: 解釋: 提示: pop、top 和 getMin 操作總是在 非空堆疊 上呼叫, |
有效的括號
|
給定一個只包括 '(',')','{','}','[',']' 的字串 s ,判斷字串是否有效, 有效字串需滿足: 左括號必須用相同型別的右括號閉合, 示例 1: 輸入:s = "()" 輸入:s = "()[]{}" 輸入:s = "(]" 輸入:s = "([)]" 輸入:s = "{[]}" |
每日溫度
|
請根據每日 氣溫 串列 temperatures ,請計算在每一天需要等幾天才會有更高的溫度,如果氣溫在這之后都不會升高,請在該位置用 0 來代替, 示例 1: 輸入: temperatures = [73,74,75,71,69,72,76,73] 輸入: temperatures = [30,40,50,60] 輸入: temperatures = [30,60,90] |
逆波蘭運算式求值
|
根據 逆波蘭表示法,求運算式的值, 有效的算符包括 +、-、*、/ ,每個運算物件可以是整數,也可以是另一個逆波蘭運算式,
說明: 整數除法只保留整數部分, 示例 1: 輸入:tokens = ["2","1","+","3","*"] 輸入:tokens = ["4","13","5","/","+"] 輸入:tokens = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"] 提示: 1 <= tokens.length <= 104 逆波蘭運算式: 逆波蘭運算式是一種后綴運算式,所謂后綴就是指算符寫在后面, 平常使用的算式則是一種中綴運算式,如 ( 1 + 2 ) * ( 3 + 4 ) , 去掉括號后運算式無歧義,上式即便寫成 1 2 + 3 4 + * 也可以依據次序計算出正確結果, |
島嶼數量
|
給你一個由 '1'(陸地)和 '0'(水)組成的的二維網格,請你計算網格中島嶼的數量, 島嶼總是被水包圍,并且每座島嶼只能由水平方向和/或豎直方向上相鄰的陸地連接形成, 此外,你可以假設該網格的四條邊均被水包圍,
示例 1: 輸入:grid = [ 輸入:grid = [ 提示: m == grid.length |
克隆圖
|
給你無向 連通 圖中一個節點的參考,請你回傳該圖的 深拷貝(克隆), 圖中的每個節點都包含它的值 val(int) 和其鄰居的串列(list[Node]), class Node { 測驗用例格式: 簡單起見,每個節點的值都和它的索引相同,例如,第一個節點值為 1(val = 1),第二個節點值為 2(val = 2),以此類推,該圖在測驗用例中使用鄰接串列表示, 鄰接串列 是用于表示有限圖的無序串列的集合,每個串列都描述了圖中節點的鄰居集, 給定節點將始終是圖中的第一個節點(值為 1),你必須將 給定節點的拷貝 作為對克隆圖的參考回傳,
示例 1:
輸入:adjList = [[2,4],[1,3],[2,4],[1,3]]
輸入:adjList = [[]] 輸入:adjList = []
輸入:adjList = [[2],[1]] 提示: 節點數不超過 100 , |
目標和
|
給你一個整數陣列 nums 和一個整數 target , 向陣列中的每個整數前添加 '+' 或 '-' ,然后串聯起所有整數,可以構造一個 運算式 : 例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串聯起來得到運算式 "+2-1" ,
示例 1: 輸入:nums = [1,1,1,1,1], target = 3 輸入:nums = [1], target = 1 提示: 1 <= nums.length <= 20 |
二叉樹的中序遍歷
|
給定一個二叉樹的根節點 root ,回傳它的 中序 遍歷,
示例 1:
輸入:root = [] 輸入:root = [1]
|
用堆疊實作佇列
|
請你僅使用兩個堆疊實作先入先出佇列,佇列應當支持一般佇列支持的所有操作(push、pop、peek、empty): 實作 MyQueue 類: void push(int x) 將元素 x 推到佇列的末尾 說明: 你只能使用標準的堆疊操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的, 進階: 你能否實作每個操作均攤時間復雜度為 O(1) 的佇列?換句話說,執行 n 個操作的總時間復雜度為 O(n) ,即使其中一個操作可能花費較長時間, 示例: 輸入: 解釋: 提示: 1 <= x <= 9 |
用佇列實作堆疊
|
請你僅使用兩個佇列實作一個后入先出(LIFO)的堆疊,并支持普通堆疊的全部四種操作(push、top、pop 和 empty), 實作 MyStack 類: void push(int x) 將元素 x 壓入堆疊頂, 注意: 你只能使用佇列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 這些操作, 示例: 輸入: 解釋: 提示: 1 <= x <= 9 進階:你能否實作每種操作的均攤時間復雜度為 O(1) 的堆疊?換句話說,執行 n 個操作的總時間復雜度 O(n) ,盡管其中某個操作可能需要比其他操作更長的時間,你可以使用兩個以上的佇列, |
字串解碼
|
給定一個經過編碼的字串,回傳它解碼后的字串, 編碼規則為: k[encoded_string],表示其中方括號內部的 encoded_string 正好重復 k 次,注意 k 保證為正整數, 你可以認為輸入字串總是有效的;輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的, 此外,你可以認為原始資料不包含數字,所有的數字只表示重復的次數 k ,例如不會出現像 3a 或 2[4] 的輸入,
示例 1: 輸入:s = "3[a]2[bc]" 輸入:s = "3[a2[c]]" 輸入:s = "2[abc]3[cd]ef" 輸入:s = "abc3[cd]xyz" |
影像渲染
|
有一幅以二維整數陣串列示的圖畫,每一個整數表示該圖畫的像素值大小,數值在 0 到 65535 之間, 給你一個坐標 (sr, sc) 表示影像渲染開始的像素值(行 ,列)和一個新的顏色值 newColor,讓你重新上色這幅影像, 為了完成上色作業,從初始坐標開始,記錄初始坐標的上下左右四個方向上像素值與初始坐標相同的相連像素點,接著再記錄這四個方向上符合條件的像素點與他們對應四個方向上像素值與初始坐標相同的相連像素點,……,重復該程序,將所有有記錄的像素點的顏色值改為新的顏色值, 最后回傳經過上色渲染后的影像, 示例 1: 輸入: image 和 image[0] 的長度在范圍 [1, 50] 內, |
01矩陣
|
給定一個由 0 和 1 組成的矩陣 mat ,請輸出一個大小相同的矩陣,其中每一個格子是 mat 中對應位置元素到最近的 0 的距離, 兩個相鄰元素間的距離為 1 ,
示例 1:
輸入:mat = [[0,0,0],[0,1,0],[0,0,0]]
輸入:mat = [[0,0,0],[0,1,0],[1,1,1]] 提示: m == mat.length |
鑰匙和房間
|
有 n 個房間,房間按從 0 到 n - 1 編號,最初,除 0 號房間外的其余所有房間都被鎖住,你的目標是進入所有的房間,然而,你不能在沒有獲得鑰匙的時候進入鎖住的房間, 當你進入一個房間,你可能會在里面找到一套不同的鑰匙,每把鑰匙上都有對應的房間號,即表示鑰匙可以打開的房間,你可以拿上所有鑰匙去解鎖其他房間, 給你一個陣列 rooms 其中 rooms[i] 是你進入 i 號房間可以獲得的鑰匙集合,如果能進入 所有 房間回傳 true,否則回傳 false,
示例 1: 輸入:rooms = [[1],[2],[3],[]] 輸入:rooms = [[1,3],[3,0,1],[2],[0]] 提示: n == rooms.length |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/398388.html
標籤:Java









