請定義乙個佇列並實現函式max_value
得到佇列裡的最大值,要求函式max_value
、push_back
和pop_front
的均攤時間複雜度都是o(1)。
若隊列為空,pop_front
和max_value
需要返回 -1。
class
maxqueue
public
intmax_value()
public
void
push_back
(int value)
deque.
addlast
(value);}
public
intpop_front()
int value = queue.
removefirst()
;if(deque.
peekfirst()
== value) deque.
removefirst()
;return value;
}}
把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。
你需要用乙個浮點數陣列返回答案,其中第 i 個元素代表這 n 個骰子所能擲出的點數集合中第 i 小的那個的概率。
輸入: 1
輸出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]
class
solution
;for
(int i =
2; i <= n; i++)}
dp = tmp;
}return dp;
}}
從撲克牌中隨機抽5張牌,判斷是不是乙個順子,即這5張牌是不是連續的。2~10為數字本身,a為1,j為11,q為12,k為13,而大、小王為 0 ,可以看成任意數字。a 不能視為 14。
輸入: [1,2,3,4,5]
輸出: true
輸入: [0,0,1,2,5]
輸出: true
class
solution
return max - min <5;
}}
0,1,n-1這n個數字排成乙個圓圈,從數字0開始,每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡剩下的最後乙個數字。
arraylist的解法,耗時1s多。
class
solution
return list.
get(0)
;}}
2、數學倒推
m = 3,
第一輪是 [0, 1, 2, 3, 4] ,所以是 [0, 1, 2, 3, 4] 。這一輪 2 刪除了。
第二輪開始時,從 3 開始,所以是 [3, 4, 0, 1] 。這一輪 0 刪除了。
第三輪開始時,從 1 開始,所以是 [1, 3, 4] 。這一輪 4 刪除了。
第四輪開始時,還是從 1 開始,所以是 [1, 3] 。這一輪 1 刪除了。
最後剩下的數字是 3。
然後我們從最後剩下的 3 倒著看,我們可以反向推出這個數字在之前每個輪次的位置。
最後剩下的 3 的下標是 0。
第四輪反推,補上 m 個位置,然後模上當時的陣列大小 22,位置是(0 + 3) % 2 = 1。
第三輪反推,補上 m 個位置,然後模上當時的陣列大小 33,位置是(1 + 3) % 3 = 1。
第二輪反推,補上 m 個位置,然後模上當時的陣列大小 44,位置是(1 + 3) % 4 = 0。
第一輪反推,補上 m 個位置,然後模上當時的陣列大小 55,位置是(0 + 3) % 5 = 3。
所以最終剩下的數字的下標就是3。因為陣列是從0開始的,所以最終的答案就是3。
class
solution
return index;
}}
class
solution
return maxprofit;
}}
11 劍指offer第十一題(python)
問題 輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。coding utf 8 class solution def numberof1 self,n write code here count 0 if n 0 n n 0xffffffff while n count 1 n n...
劍指offer全套解答 劍指offer 1 5
1.二維陣列中的查詢 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。public class solution int n array 0 length i...
劍指offer全套解答 劍指offer 36 45
36.兩個鍊錶的第乙個公共節點 輸入兩個鍊錶,找出它們的第乙個公共結點。注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的 public class solution return p 37.數字在排序陣列 現的次數 統計乙個數字在公升序陣列 現的次數。publi...