1332. 删除回文子序列
这个题目有误导性,没说一定要删除连续的回文子序列***
class Solution {
public int removePalindromeSub(String s) {
if(s==null || s.length()==0){
return 0;
}
for(int i=0;i<s.length();i++){
if(s.charAt(i)!=s.charAt(s.length()-1-i)){
return 2;
}
}
return 1;
}
}
1333. 餐厅过滤器
class Solution {
public List<Integer> filterRestaurants(int[][] restaurants, int veganFriendly, int maxPrice, int maxDistance) {
List<Integer> lists = new ArrayList<Integer>();
List<Integer> res = new ArrayList<Integer>();
for(int i=0;i<restaurants.length;i++){
if((veganFriendly==1 && restaurants[i][2]==1)|| veganFriendly==0 ){
if(restaurants[i][3]<=maxPrice && restaurants[i][4]<=maxDistance){
lists.add(i);
}
}
}
for(int i=0;i<lists.size()-1;i++){
for(int j=i+1;j<lists.size();j++){
int a = restaurants[lists.get(i)][1];
int b = restaurants[lists.get(j)][1];
if(a<b){
Integer temp = lists.get(i);
lists.set(i,lists.get(j));
lists.set(j,temp);
}else if(a==b){
if(restaurants[lists.get(i)][0]<restaurants[lists.get(j)][0]){
Integer temp = lists.get(i);
lists.set(i,lists.get(j));
lists.set(j,temp);
}
}
}
}
for(int i =0 ;i<lists.size();i++){
res.add(restaurants[lists.get(i)][0]);
}
return res;
}
}
1334. 阈值距离内邻居最少的城市
floyd方法
参考以下代码:jerry_nju
public static int findTheCity(int n, int[][] edges, int distanceThreshold) {
int[][] map = new int[n][n];
//init
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j) {
map[i][j] = 0;
} else {
map[i][j] = Integer.MAX_VALUE;
}
}
}
//get map
for (int[] e : edges) {
map[e[0]][e[1]] = map[e[1]][e[0]] = e[2];
}
for (int k = 0; k < n; k++) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i != k && j != k && map[i][k] != Integer.MAX_VALUE && map[k][j] != Integer.MAX_VALUE) {
map[i][j] = Math.min(map[i][j], map[i][k] + map[k][j]);
}
}
}
}
//get res
int min = n + 1;
int res = -1;
for (int i = 0; i < n; i++) {
int count = 0;
for (int j = 0; j < n; j++) {
if (i != j && map[i][j] <= distanceThreshold) {
count++;
}
}
if (min >= count) {
min = count;
res = i;
}
}
return res;
}