LeetCode Weekly Contest 479 Discussion and Solution
Priyanshu Chaurasiya
3 months ago
Priyanshu Chaurasiya
3 months ago

| Problem |
|---|
Join the conversation by signing in below!
| Difficulty |
|---|
| Points |
|---|
| Status |
|---|
| 1 | Easy | 3 | Solved |
| 2 | Medium | 4 | Solved |
| 3 | Medium | 5 | Unsolved |
| 4 | Hard | 6 | Unsolved |
class Solution {
public int getRev(int n){
StringBuilder sb = new StringBuilder();
while(n > 0){
if(n % 2 == 0) sb.append('0');
else sb.append('1');
n /= 2;
}
int num = 0;
int len = sb.length();
for(int i = len - 1; i >= 0; i--){
if(sb.charAt(i) == '1'){
num += (int) Math.pow(2, len - i - 1);
}
}
return num;
}
public int[] sortByReflection(int[] nums) {
int n = nums.length;
int[][] rev = new int[n][2];
int[] ans = new int[n];
for(int i = 0; i < n; i++){
int revNum = getRev(nums[i]);
rev[i][0] = revNum;
rev[i][1] = i;
}
Arrays.sort(rev, (a, b) -> a[0] == b[0] ? nums[a[1]] - nums[b[1]] : a[0] - b[0]);
for(int i = 0; i < n; i++){
ans[i] = nums[rev[i][1]];
}
return ans;
}
}class Solution {
public boolean isPrime(int n){
if(n <= 1) return false;
if(n == 2 || n == 3) return true;
if(n % 2 == 0 || n % 3 == 0) return false;
for(int i = 5; i * i <= n; i++){
if(n % i == 0) return false;
}
return true;
}
public int largestPrime(int n) {
int sum = 0;
int ans = 0;
for(int i = 2; i <= n; i++){
if(isPrime(i)){
sum += i;
if(sum > n) break;
if(isPrime(sum)) ans = sum;
}
}
return ans;
}
}class Solution {
public long totalScore(int hp, int[] damage, int[] requirement) {
int n = damage.length;
long ans = 0;
for(int i = 0; i < n; i++){
int currHp = hp;
for(int j = i; j < n; j++){
currHp -= damage[j];
if(requirement[j] <= currHp) ans++;
}
}
return ans;
}
}class Solution {
public int getScore(int curr, List<Integer>[] adj, boolean[] vis, int[] good){
int score = good[curr] == 1 ? 1 : -1;
vis[curr] = true;
for(int i = 0; i < adj[curr].size(); i++){
int next = adj[curr].get(i);
if(vis[next]) continue;
int sc = getScore(next, adj, vis, good);
if(sc > 0) score += sc;
}
return score;
}
public int[] maxSubgraphScore(int n, int[][] edges, int[] good) {
List<Integer>[] adj = new ArrayList[n];
for(int i = 0; i < n; i++){
adj[i] = new ArrayList<>();
}
for(int[] e : edges){
int a = e[0];
int b = e[1];
adj[a].add(b);
adj[b].add(a);
}
int[] ans = new int[n];
for(int i = 0; i < n; i++){
int score = getScore(i, adj, new boolean[n], good);
ans[i] = score;
}
return ans;
}
}No comments yet, Start the conversation!