Skip to content

Commit 55af3dd

Browse files
Merge pull request algorithm001#614 from MrQingQuan/master
046-第三周作业提交
2 parents 44f3c13 + 2b93f43 commit 55af3dd

5 files changed

Lines changed: 160 additions & 0 deletions

File tree

Week_03/id_46/leetcode_210_046.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
class Solution {
2+
public:
3+
vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) {
4+
vector<vector<int>> nodeLink(numCourses, vector<int>(0));
5+
vector<int> result,degree(numCourses,0);
6+
for(auto i:prerequisites){
7+
nodeLink[i[1]].push_back(i[0]);
8+
degree[i[0]]++;
9+
}
10+
queue<int> nodequeue;
11+
for(int i=0; i<degree.size(); i++){
12+
if(degree[i] ==0 ){
13+
nodequeue.push(i);
14+
result.push_back(i);
15+
}
16+
}
17+
while(!nodequeue.empty()){
18+
int tmp = nodequeue.front();
19+
nodequeue.pop();
20+
for(auto i:nodeLink[tmp]){
21+
degree[i]--;
22+
if(degree[i]==0){
23+
nodequeue.push(i);
24+
result.push_back(i);
25+
}
26+
}
27+
}
28+
for(int i=0; i<degree.size(); i++){
29+
if(degree[i] !=0 )
30+
result.clear();
31+
}
32+
return result;
33+
}
34+
};

Week_03/id_46/leetcode_373_046.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution {
2+
public:
3+
struct cmp{
4+
bool operator() ( pair<int,int> &a, pair<int,int> &b ){
5+
return a.first + a.second <= b.first + b.second; }
6+
};
7+
vector<vector<int>> kSmallestPairs(vector<int>& nums1, vector<int>& nums2, int k) {
8+
priority_queue<pair<int,int>,vector<pair<int,int>>,cmp> q;
9+
for(int i=0; i<min((int)nums1.size(), k); i++){
10+
for(int j=0; j<min((int)nums2.size(), k); j++){
11+
q.push(make_pair(nums1[i],nums2[j]));
12+
if(q.size()>k)
13+
q.pop();
14+
}
15+
}
16+
vector<vector<int>> result;
17+
while(q.size()>0){
18+
vector<int> tmp;
19+
tmp.push_back(q.top().first);
20+
tmp.push_back(q.top().second);
21+
result.push_back(tmp);
22+
q.pop();
23+
}
24+
return result;
25+
}
26+
};

Week_03/id_46/leetcode_429_046.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
// Definition for a Node.
3+
class Node {
4+
public:
5+
int val;
6+
vector<Node*> children;
7+
8+
Node() {}
9+
10+
Node(int _val, vector<Node*> _children) {
11+
val = _val;
12+
children = _children;
13+
}
14+
};
15+
*/
16+
class Solution {
17+
public:
18+
vector<vector<int>> levelOrder(Node* root) {
19+
vector<vector<int>> result;
20+
if(!root) return result;
21+
queue<Node*> nq;
22+
nq.push(root);
23+
while(nq.size()>0){
24+
vector<int> tempres;
25+
int nqsize = nq.size();
26+
for(int i=0; i<nqsize; i++){
27+
Node* tmp = nq.front();
28+
nq.pop();
29+
tempres.push_back(tmp->val);
30+
for(int j=0; j<tmp->children.size(); j++)
31+
nq.push(tmp->children[j]);
32+
}
33+
result.push_back(tempres);
34+
}
35+
return result;
36+
}
37+
};

Week_03/id_46/leetcode_703_046.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
class KthLargest {
2+
public:
3+
struct cmp{
4+
bool operator()(int &a, int &b){
5+
return a>b;
6+
}
7+
};
8+
priority_queue<int,vector<int>,cmp> numset;
9+
int cap;
10+
KthLargest(int k, vector<int>& nums) {
11+
cap = k;
12+
for(int i=0; i<nums.size(); i++)
13+
add(nums[i]);
14+
}
15+
16+
int add(int val) {
17+
if(numset.size()<cap)
18+
numset.push(val);
19+
else if(numset.top() < val){
20+
numset.pop();
21+
numset.push(val);
22+
}
23+
return numset.top();
24+
}
25+
};
26+
27+
/**
28+
* Your KthLargest object will be instantiated and called as such:
29+
* KthLargest* obj = new KthLargest(k, nums);
30+
* int param_1 = obj->add(val);
31+
*/

Week_03/id_46/leetcode_997_046.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
class Solution {
2+
public:
3+
int findJudge(int N, vector<vector<int>>& trust) {
4+
unordered_map<int,set<int>> trustGraph;
5+
for(int i=1; i<=N; i++){
6+
set<int> tmp;
7+
trustGraph[i] = tmp;
8+
}
9+
10+
for(int i=0; i<trust.size(); i++)
11+
trustGraph[trust[i][0]].insert(trust[i][1]);
12+
13+
int res = 0, num = 0;
14+
for(auto it=trustGraph.begin(); it!=trustGraph.end(); it++){
15+
if(it->second.size()==0){
16+
num ++;
17+
if(num > 1) return -1;
18+
res = it->first;
19+
}
20+
}
21+
22+
for(auto it=trustGraph.begin(); it!=trustGraph.end(); it++){
23+
if(it->first != res){
24+
auto iter = it->second.find(res);
25+
if(iter == it->second.end())
26+
return -1;
27+
}
28+
}
29+
30+
return res;
31+
}
32+
};

0 commit comments

Comments
 (0)