最小高度树 / 1667. 修复表中的名字 / 1484. 按日期分组销售产品 / 1527. 患某种疾病的患者"/>
310. 最小高度树 / 1667. 修复表中的名字 / 1484. 按日期分组销售产品 / 1527. 患某种疾病的患者
310. 最小高度树【中等题】【每日一题】
思路:【看评论区~】
这题不会写的原因,我觉得至少有一半得归因于 看不懂题目在说什么~
那么我先写一下,我看完题解后理解的 题目在问什么:
题目给了你一个无向图,图上有很多节点,让你找出这些节点中,距离叶子节点距离最小的那些节点。
那么如何解决呢?
可以将所有的叶子节点找出来,将它们添加到队列里,使用while循环对队列进行处理,去掉所有的叶子节点,处理过程中,对这些叶子节点的相邻节点进行筛选,如果在下一轮筛选过程中有可能成为叶子节点,就将其添加到队列中。当处理完所有的叶子节点后,剩下的节点就是距离叶子节点距离最小的那些节点。
具体代码实现见代码注释,本文主要参考自力扣评论区小鑫大佬的题解
代码:
class Solution {public List<Integer> findMinHeightTrees(int n, int[][] edges) {List<Integer> ans = new ArrayList<>();//如果只有一个节点,那么它就是最小高度树if (n == 1){ans.add(0);return ans;}//建立各个节点的度表int[] parent = new int[n];//建图List<Integer>[] adj = new List[n];for (int i = 0; i < n; i++) {adj[i] = new ArrayList<>();}for (int[] edge : edges) {adj[edge[0]].add(edge[1]);adj[edge[1]].add(edge[0]);parent[edge[0]]++;parent[edge[1]]++;}//建立队列Queue<Integer> queue = new LinkedList<>();//把所有度为1的节点,也就是叶子节点加入队列for (int i = 0; i < n; i++) {if (parent[i] == 1){queue.offer(i);}}//当queue不为空时while (!queue.isEmpty()){ans = new ArrayList<>();//保存结果集合int size = queue.size();//记录每一层的节点数量for (int i = 0; i < size; i++) {int cur = queue.poll();//弹出队列中一个叶子节点ans.add(cur);//把当前节点加入结果集List<Integer> neighbors = adj[cur];//拿到当前节点的相邻节点//剪掉当前节点for (Integer neighbor : neighbors) {parent[neighbor]--;//其相邻节点的度也会减1if (parent[neighbor] == 1){queue.offer(neighbor);//如果相邻节点因此变为了叶子节点,那么就将其添加入队列中}}}}return ans;}
}
1667. 修复表中的名字【简单题】
代码:
# Write your MySQL query statement below
select user_id , concat(upper(left(name,1)),lower(substring(name,2))) as `name`
from Users
order by user_id;
1484. 按日期分组销售产品【简单题】
代码:
# Write your MySQL query statement below
select sell_date,
count(distinct product) as `num_sold`,# 统计产品的数量
# 将产品按照当前分组进行拼接,默认排序从小到大,即字典序,默认拼接符为 ,
group_concat(distinct product) as `products`
from Activities
group by sell_date # 按sell_date分组
order by sell_date; # 结果集按sell_date从小到大排序
1527. 患某种疾病的患者【简单题】
代码:
# Write your MySQL query statement below
select *
from Patients
where conditions rlike '^DIAB1|.*\\sDIAB1';# rlike表示判断数据是否与正则表达式相匹配
更多推荐
310. 最小高度树 / 1667. 修复表中的名字 / 1484. 按日期分组销售产品 / 1527. 患某种疾病的患者
发布评论