Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions 3495 Minimum Operations To Make Array Elements Zero.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
class Solution {
public:
long long minOperations(vector<vector<int>>& queries) {
long long ans=0;
for(int i=0;i<queries.size();i++){
long long log4a=1;
long long a=queries[i][0];
long long b=queries[i][1];
long long log4b=1;
while(a>3){
log4a++;
a/=4;
}
while(b>3){
log4b++;
b/=4;
}
if(log4a==log4b){
ans+=((queries[i][1]-queries[i][0]+1)*log4a+1)/2;
continue;
}
long long st=pow(4,log4a);
long long end=pow(4,(log4b-1));
long long sum=(st-queries[i][0])*log4a;
sum+=(queries[i][1]-end+1)*log4b;
log4a++;
while(log4a<log4b){
long long temp=st*4;
sum+=(temp-st)*log4a;
st=temp;
log4a++;
}
ans+=(sum+1)/2;
}
return ans;
}
};
52 changes: 52 additions & 0 deletions 3619_Count_Islands__with_Total_Value_Divisible_By_K.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
class Solution {
public:
int countIslands(vector<vector<int>>& grid, int k) {
int m=grid.size();
int n=grid[0].size();
int cnt=0;
vector<vector<bool>> visited(m,vector<bool> (n));
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
//cout<<i<<" "<<j<<" "<<visited[i][j]<<'\n';
if(!(visited[i][j])&&grid[i][j]>0){
long long sum=0;
int a=i;
int b=j;
dfs(grid,visited,a,b,sum,m,n);
//cout<<sum<<" "<<grid[i][j]<<" "<<i<<" "<<j<<"\n";
if(sum%k==0){
cnt++;
}
}
}
}
return cnt;
}
void dfs(vector<vector<int>>& grid, vector<vector<bool>> &visited, int &x,int &y, long long &sum, int m, int n){
sum+=grid[x][y];
//cout<<grid[x][y]<<" "<<x<<" "<<y<<" ";
visited[x][y]=true;
if(x<m-1){
int l=x+1;
if(grid[l][y]!=0&&!visited[l][y])
dfs(grid,visited,l,y,sum,m,n);
}
if(y<n-1){
int h=y+1;
if(grid[x][h]!=0&&!visited[x][h])
dfs(grid,visited,x,h,sum,m,n);
}
if(x>0){
int a=x-1;
if(grid[a][y]>0 &&!visited[a][y])
dfs(grid,visited,a,y,sum,m,n);
}
if(y>0){
int b=y-1;
if(grid[x][b]>0 &&!visited[x][b])
dfs(grid,visited,x,b,sum,m,n);
}

}

};