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

Lines changed: 13 additions & 0 deletions
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

Lines changed: 13 additions & 0 deletions
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+
};
Lines changed: 13 additions & 0 deletions
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+
};
Lines changed: 13 additions & 0 deletions
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+
};
Lines changed: 30 additions & 0 deletions
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

Lines changed: 91 additions & 0 deletions
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

Lines changed: 27 additions & 0 deletions
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

Lines changed: 46 additions & 4 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy