周赛263
This commit is contained in:
parent
4842275669
commit
a35bc2f2cc
142
src/main/java/com/code/leet/week/Solution263.java
Normal file
142
src/main/java/com/code/leet/week/Solution263.java
Normal file
@ -0,0 +1,142 @@
|
||||
package com.code.leet.week;
|
||||
|
||||
import com.code.leet.entiy.TwoArray;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @description:
|
||||
* @author: Administrator
|
||||
* @date: 2021/8/22-10:29
|
||||
*/
|
||||
public class Solution263 {
|
||||
public static void main(String[] args) {
|
||||
Solution263 solution = new Solution263();
|
||||
// solution.areNumbersAscending("hello world 5 x 5");
|
||||
TwoArray twoArray = new TwoArray("[[1,2],[1,3],[1,4],[3,4],[4,5]]", true);
|
||||
solution.secondMinimum(5, twoArray.getArr(), 3, 5);
|
||||
}
|
||||
|
||||
public boolean areNumbersAscending(String s) {
|
||||
int num = -1;
|
||||
String str = "";
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
if (Character.isDigit(s.charAt(i))) {
|
||||
str = "" + s.charAt(i);
|
||||
i++;
|
||||
while (i < s.length() && Character.isDigit(s.charAt(i))) {
|
||||
str += s.charAt(i);
|
||||
i++;
|
||||
}
|
||||
if (num < Integer.parseInt(str)) {
|
||||
num = Integer.parseInt(str);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
class Bank {
|
||||
long[] balance;
|
||||
|
||||
public Bank(long[] balance) {
|
||||
this.balance = balance;
|
||||
}
|
||||
|
||||
public boolean transfer(int account1, int account2, long money) {
|
||||
if (account1 - 1 < balance.length && balance[account1 - 1] >= money && account2 - 1 < balance.length) {
|
||||
balance[account1 - 1] -= money;
|
||||
balance[account2 - 1] += money;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean deposit(int account, long money) {
|
||||
if (account - 1 < balance.length) {
|
||||
balance[account - 1] += money;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean withdraw(int account, long money) {
|
||||
if (account - 1 < balance.length && balance[account - 1] >= money) {
|
||||
balance[account - 1] -= money;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int max = -1;
|
||||
int count = 1;
|
||||
|
||||
public int countMaxOrSubsets(int[] nums) {
|
||||
dfs(0, nums, 0);
|
||||
return count;
|
||||
}
|
||||
|
||||
private void dfs(int index, int[] nums, int res) {
|
||||
if (index == nums.length) {
|
||||
if (max == -1 || res > max) {
|
||||
max = res;
|
||||
count = 1;
|
||||
} else if (res == max) {
|
||||
count++;
|
||||
}
|
||||
return;
|
||||
}
|
||||
dfs(index + 1, nums, res | nums[index]);
|
||||
dfs(index + 1, nums, res);
|
||||
}
|
||||
|
||||
public int secondMinimum(int n, int[][] edges, int time, int change) {
|
||||
Map<Integer, List<Integer>> map = new HashMap<>();
|
||||
for (int[] edge : edges) {
|
||||
List<Integer> list = map.getOrDefault(edge[0], new ArrayList<>());
|
||||
list.add(edge[1]);
|
||||
map.put(edge[0], list);
|
||||
list = map.getOrDefault(edge[1], new ArrayList<>());
|
||||
list.add(edge[0]);
|
||||
map.put(edge[1], list);
|
||||
}
|
||||
Queue<int[]> queue = new LinkedList<>();
|
||||
queue.add(new int[]{1, 0});
|
||||
int[] counts = new int[n + 1];
|
||||
while (!queue.isEmpty()) {
|
||||
int[] arrs = queue.peek();
|
||||
int free = arrs[1] + time;
|
||||
if ((arrs[1] / change) % 2 == 1) {
|
||||
free += change - arrs[1] % change;
|
||||
}
|
||||
int size = queue.size();
|
||||
boolean bl = true;
|
||||
boolean[] use = new boolean[n + 1];
|
||||
for (int i = 0; i < size; i++) {
|
||||
arrs = queue.poll();
|
||||
List<Integer> list = map.get(arrs[0]);
|
||||
for (int num : list) {
|
||||
if (!use[num] && counts[num] < 2) {
|
||||
queue.add(new int[]{num, free});
|
||||
use[num] = true;
|
||||
counts[num]++;
|
||||
}
|
||||
if (num == n && bl) {
|
||||
bl = false;
|
||||
if (counts[num] == 2) {
|
||||
return free;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user