Skip to content

Commit c784a4c

Browse files
committed
maybe last commit
1 parent e66b8c7 commit c784a4c

10 files changed

+246
-4
lines changed

2923 Find Champion.cpp

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public:
3+
int findChampion(int n, vector<vector<int>>& edges) {
4+
set<int>s;
5+
for(int i=0;i<edges.size();i++)
6+
s.insert(edges[i][1]);
7+
if(s.size()!=n-1)return -1;
8+
for(int i=0;i<edges.size();i++)
9+
if(s.find(edges[i][0])==s.end())
10+
return edges[i][0];
11+
return 0;
12+
}
13+
};

2924. Find Champion II.cpp

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public:
3+
int findChampion(int n, vector<vector<int>>& edges) {
4+
set<int>s;
5+
for(int i=0;i<edges.size();i++)
6+
s.insert(edges[i][1]);
7+
if(s.size()!=n-1)return -1;
8+
for(int i=0;i<edges.size();i++)
9+
if(s.find(edges[i][0])==s.end())
10+
return edges[i][0];
11+
return -1;
12+
}
13+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public:
3+
long long combo(int n){
4+
return 1ll* n *(n-1)/2;
5+
}
6+
long long distributeCandies(int n, int limit) {
7+
if (n>3*limit) return 0;
8+
long long res = combo(n + 2);
9+
if (n>limit) res -= 3*combo(n-limit+1);
10+
if (n-2>=2*limit) res += 3*combo(n-2*limit);
11+
return res;
12+
}
13+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public:
3+
long long combo(int n){
4+
return 1ll* n *(n-1)/2;
5+
}
6+
long long distributeCandies(int n, int limit) {
7+
if (n>3*limit) return 0;
8+
long long res = combo(n + 2);
9+
if (n>limit) res -= 3*combo(n-limit+1);
10+
if (n-2>=2*limit) res += 3*combo(n-2*limit);
11+
return res;
12+
}
13+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Solution {
2+
public:
3+
int sol(vector<int>nums1, vector<int>nums2){
4+
int h1=nums1[nums1.size()-1];
5+
int h2=nums2[nums1.size()-1];
6+
int ans=0;
7+
for(int i=0;i<nums1.size()-1;i++){
8+
if(nums1[i]>h1){
9+
if(nums2[i]>h1)return -1;
10+
else{ swap(nums1[i],nums2[i]);ans++;}
11+
}
12+
if(nums2[i]>h2){
13+
if(nums1[i]>h2)return -1;
14+
else{ swap(nums2[i],nums1[i]);ans++;}
15+
}
16+
if(nums1[i]>h1 || nums2[i]>h2)return -1;
17+
}
18+
19+
return ans;
20+
}
21+
int minOperations(vector<int>& nums1, vector<int>& nums2) {
22+
int ans1=sol(nums1,nums2);
23+
swap(nums1[nums1.size()-1],nums2[nums1.size()-1]);
24+
int ans2=sol(nums1,nums2);
25+
if(ans1==ans2)return ans1;
26+
else if(ans1==-1)return ans2+1;
27+
else if(ans2==-1)return ans1;
28+
else return min(ans1,ans2+1);
29+
}
30+
};

High-Access Employees.cpp

Whitespace-only changes.

Maximum Strong Pair XOR I.cpp

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
struct Node {
2+
Node* links[2];
3+
int frequency;
4+
Node() : frequency(0) {
5+
links[0] = links[1] = NULL;
6+
}
7+
8+
bool containsKey(int bit) {
9+
return (links[bit] != NULL);
10+
}
11+
12+
Node* get(int bit) {
13+
return links[bit];
14+
}
15+
16+
void put(int bit, Node* node) {
17+
links[bit] = node;
18+
}
19+
};
20+
21+
class Trie {
22+
private:
23+
Node* root;
24+
25+
public:
26+
Trie() {
27+
root = new Node();
28+
}
29+
30+
void insert(int num) {
31+
Node* node = root;
32+
for (int i = 31; i >= 0; i--) {
33+
int bit = (num >> i) & 1;
34+
if (!node->containsKey(bit)) {
35+
node->put(bit, new Node());
36+
}
37+
node = node->get(bit);
38+
node->frequency++;
39+
}
40+
}
41+
42+
int getMax(int num) {
43+
Node* node = root;
44+
int res = 0;
45+
for (int i = 31; i >= 0; i--) {
46+
int bit = (num >> i) & 1;
47+
if (node->containsKey(1 - bit) && node->get(1 - bit)->frequency > 0) {
48+
res = res | (1 << i);
49+
node = node->get(1 - bit);
50+
} else {
51+
if(node->containsKey(bit) && node->get(bit)->frequency > 0) node = node->get(bit);
52+
else return 0;
53+
}
54+
}
55+
return res;
56+
}
57+
58+
void deleteKey(int num) {
59+
Node* node = root;
60+
for (int i = 31; i >= 0; i--) {
61+
int bit = (num >> i) & 1;
62+
if (node->containsKey(bit)) {
63+
node = node->get(bit);
64+
node->frequency--;
65+
} else {
66+
break;
67+
}
68+
}
69+
}
70+
};
71+
72+
class Solution {
73+
public:
74+
int maximumStrongPairXor(vector<int>& nums) {
75+
int n=nums.size();
76+
sort(begin(nums),end(nums));
77+
int maxi=0;
78+
int j=0;
79+
Trie t;
80+
t.insert(nums[0]);
81+
for(int i=1;i<n;i++) {
82+
while(j<i && nums[i]-nums[j]>min(nums[i],nums[j])) {
83+
t.deleteKey(nums[j]);
84+
++j;
85+
}
86+
maxi=max(maxi,t.getMax(nums[i]));
87+
t.insert(nums[i]);
88+
}
89+
return maxi;
90+
}
91+
};

Most Profit Assigning Work.cpp

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution {
2+
public:
3+
int maxProfitAssignment(vector<int>& diff, vector<int>& pro, vector<int>& wor) {
4+
vector<pair<int,int>>v;
5+
for(int i=0;i<diff.size();i++)
6+
v.push_back({diff[i],pro[i]});
7+
sort(v.begin(),v.end());
8+
for(int i=1;i<diff.size();i++)
9+
v[i].second=max(v[i-1].second,v[i].second);
10+
int ans=0;
11+
for(int i=0;i<wor.size();i++){
12+
int start=0,end=diff.size()-1,index=-1;
13+
while(start<=end){
14+
int mid=(start+end)>>1;
15+
if(v[mid].first>wor[i])
16+
end=mid-1;
17+
else{
18+
index=mid;
19+
start=mid+1;
20+
}
21+
}
22+
if(index!=-1)
23+
ans+=v[index].second;
24+
}
25+
return ans;
26+
}
27+
};

tempCodeRunnerFile

51.4 KB
Binary file not shown.

tempCodeRunnerFile.cpp

+46-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,46 @@
1-
9
2-
8
3-
7
4-
6
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
int maxProfitAssignment(vector<int>& diff, vector<int>& pro, vector<int>& wor) {
4+
vector<pair<int,int>>v;
5+
for(int i=0;i<diff.size();i++){
6+
v.push_back({diff[i],pro[i]});
7+
}
8+
int maxi=0;
9+
for(int i=0;i<diff.size();i++){
10+
v[i].second=max(maxi,v[i].second);
11+
maxi=max(v[i].second,maxi);
12+
}
13+
int ans=0;
14+
for(int i=0;i<wor.size();i++){
15+
int start=0;
16+
int end=diff.size()-1;
17+
int index=-1;
18+
while(start<=end){
19+
int mid=(start+end)/2;
20+
if(v[mid].first>wor[i]){
21+
end=mid-1;
22+
}
23+
else{
24+
index=mid;
25+
start=mid+1;
26+
}
27+
cout<<index<<endl;
28+
}
29+
if(index==-1){
30+
continue;
31+
}
32+
ans+=v[index].second;
33+
}
34+
return ans;
35+
}
36+
int main(){
37+
// string s="012";
38+
// int m=stoi(s);
39+
// cout<<m;
40+
// cout<<((10)>>2);
41+
// vector<int>v={1,2,3};
42+
// maxProfitAssignment(v,v,v);
43+
// vector<int>arr={1,2,4,5};
44+
// auto t=lower_bound(arr.begin(),arr.end(),3);
45+
// cout<<*t<<endl;
46+
}

0 commit comments

Comments
 (0)