1.每日记
国庆加餐
2.LeetCode每日一题
1143.旅行的终点
给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。
题目数据保证线路图会形成一条不存在循环的线路,因此恰有一个旅行终点站。
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
public class Solution1436 {
public String destCity(List<List<String>> paths) {
HashSet<String> hashSetLeft = new HashSet<>();
HashSet<String> hashSetRight = new HashSet<>();
Iterator iterator = paths.iterator();
while (iterator.hasNext()){/
List<String> list =(List<String>) iterator.next();
String left = list.get(0);
String right = list.get(1);
hashSetLeft.add(left);
if(!hashSetRight.isEmpty() && hashSetRight.contains(left)){
hashSetRight.remove(left);
}
if(!hashSetLeft.isEmpty() && !hashSetLeft.contains(right))
hashSetRight.add(right);
}
return String.valueOf(hashSetRight.toArray()[0]);
}
}
我写的有点复杂了,但思路还是一样的
3. 73矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
进阶:
一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。
一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。
你能想出一个仅使用常量空间的解决方案吗?
import java.util.Arrays;
public class Solution73 {
//矩阵置零
public void setZeroes(int[][] matrix) {
int row = matrix.length;
int col = matrix[0].length;
int [][]matrixCopy = new int[row][col];
for(int i = 0;i < row;i++){
matrixCopy[i] = Arrays.copyOf(matrix[i],col);
}
for(int i = 0;i < row;i++){
for(int j = 0;j < col;j++){
if(matrixCopy[i][j] == 0){
setZero(matrix,i,j);
}
}
}
int a = 1;
}
void setZero(int [][]matrix,int i,int j){
int _i = i;
while (_i >= 0) matrix[_i--][j] = 0;
_i = i;
while (_i < matrix.length) matrix[_i++][j] = 0;
int _j = j;
while (_j >= 0) matrix[i][_j--] = 0;
_j = j;
while (_j < matrix[0].length) matrix[i][_j++] = 0;
}
}