題目型別:暴力列舉
列舉每個元素,然後檢查是否符合幸運數的要求。
class
solution
if(matrix[i]
[j]> matrix[i]
[k])
}for
(int k =
0; flag && k < n; k++)if
(matrix[i]
[j]< matrix[k]
[j])}if
(flag)}}
return res;}}
;
題目型別:模擬,棧
使用 size 變數記錄棧的容量,使用 top 變數記錄棧頂位置。
坑點:進行 increment 操作時,棧內的元素可能不足 k 個。
const
int maxn =
1000
;class
customstack
void
push
(int x)
}int
pop(
)return-1
;}void
increment
(int k,
int val)}}
;
題目型別:樹的遍歷,遞迴,構造
先遍歷給出的二叉搜尋樹,按照中序遍歷的順序將樹中元素儲存下來。
根據公升序陣列構造平衡二叉搜尋樹:
如果陣列為空,則對應的樹亦為空。
如果陣列不為空,設長度為 n,那麼位置n
2\frac
2n處的元素應為樹的根節點。子陣列 [1,
n2−1
][1, \frac-1]
[1,2n
−1] 及 [n2
+1,n
][\frac+1, n]
[2n+1
,n] 分別對應左右子樹。因為兩個子陣列的長度相差不會超過 1,所以保證了左右子樹的高度相差不會超過 1。
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
dfs(root-
>left, vec)
; vec.
push_back
(root-
>val)
;dfs
(root-
>right, vec);}
treenode*
construct
(const vector<
int>
&vec,
int l,
int r)
int mid =
(l+r)
>>1;
auto ptr =
newtreenode
(vec[mid]);
ptr-
>right =
construct
(vec, mid+
1, r)
; ptr-
>left =
construct
(vec, l, mid-1)
;return ptr;
}public
: treenode*
balancebst
(treenode* root)
vector<
int> data;
dfs(root, data)
;return
construct
(data,
0, data.
size()
-1);
}};
題目型別:快速排序,堆排序,列舉
c++知識點:std::priority_queue,std::greater,運算子過載
坑點:注意在運算過程中資料範圍有可能超出 int32。
std::priority_queue 可以參見思考路書:std::greater 可以參見
當兩種方案的efficiency相等時,speed之和更大的方案顯然更優。
題目的輸入決定了最多有 n 種 efficiency。
對於每種 efficiency 肯定都會存在最優的方案。
最終答案肯定就是這個n種方案裡面最優的那個。
問題轉化成了如何快速求出每種 efficiency 的最優方案:
注意: 選取的 k 個最大speed對應的efficiency可能都大於當前列舉的 efficiency,但是這並不影響最終答案的正確性。因為如果這個選擇方案的確為最終答案的話,則其值必然記錄在其他 efficiency 的最優解中。
程式設計技巧:使用 std::priority_queue 代替堆排序**,提高編碼速度。
class
solution
bool
operator
<
(const engineer &r)
const};
vector data;
priority_queue<
int, vector<
int>
, greater<
int>> pq;
public
:int
maxperformance
(int n, vector<
int>
& speed, vector<
int>
& efficiency,
int k)
sort
(data.
begin()
, data.
end())
;int64_t sum =
0, anw =0;
for(
int i =
0; i < n; i++
) anw =
max(anw, sum * data[i]
.e);
}return anw%
(1000000007);
}};
leetcode 第 180 場周賽
大佬都是3 5分鐘一題,而我10分鐘一題,最後一題還不會。qaq 5356.矩陣中的幸運數 給你乙個m n的矩陣,矩陣中的數字各不相同。請你按任意順序返回矩陣中的所有幸運數。幸運數是指矩陣中滿足同時下列兩個條件的元素 class solution object def luckynumbers se...
leetcode 第132場周賽
愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。最初,黑板上有乙個數字n。在每個玩家的回合,玩家需要執行以下操作 如果玩家無法執行這些操作,就會輸掉遊戲。只有在愛麗絲在遊戲中取得勝利時才返回true,否則返回false。假設兩個玩家都以最佳狀態參與遊戲。示例 1 輸入 2輸出 true解釋 愛...
leetcode周賽 第176場
題目描述 給你乙個 m n 的矩陣 grid,矩陣中的元素無論是按行還是按列,都以非遞增順序排列。請你統計並返回 grid 中 負數 的數目。示例 1 輸入 grid 4,3,2,1 3,2,1,1 1,1,1,2 1,1,2,3 輸出 8 解釋 矩陣中共有 8 個負數。示例 2 輸入 grid 3...