429. N 叉树的层序遍历【中等题】【每日一题】
本题之前写过一遍,当时用的BFS+递归
N 叉树的层序遍历
今天看到题解用的BFS+队列,也试了一下,用时没有递归快。
代码:
/*
// Definition for a Node.
class Node {
public int val;
public List<Node> children;
public Node() {}
public Node(int _val) {
val = _val;
}
public Node(int _val, List<Node> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
public List<List<Integer>> levelOrder(Node root) {
List<List<Integer>> list = new ArrayList<>();
if(root != null){
//定义一个队列来存储每一层的节点
Queue<Node> queue = new LinkedList<>();
//初始化队列,将根节点存入
queue.offer(root);
while(!queue.isEmpty()){//当队列不为空时
int len = queue.size();//求当前队列的长度len
//定义存放当前层节点值的列表level
List<Integer> level = new ArrayList<>();
for(int i = 0;i < len ; i++){//遍历当前队列中前len个节点
Node cur = queue.poll();//将队列头部的节点取出
level.add(cur.val);//level中添加当前节点的值
for(Node child : cur.children){//遍历当前节点的所有子节点
//将子节点添加到队列尾部
queue.offer(child);
}
}
list.add(level);//list中更新每一层对应的节点值列表
}
}
return list;
}
}
剑指 Offer 62. 圆圈中最后剩下的数字【简单题】
思路:【约瑟夫环】
数学规律,先确定最后一个幸存的元素的下标必然是0,然后倒数第2轮的下标必然是 (0 + m) % 2,依次倒序推导,倒数第i轮的下标 为
(ans + m)% i ,其中ans为在倒数第i-1轮中幸存元素的下标。
代码:
class Solution {
public int lastRemaining(int n, int m) {
int ans = 0;//ans表示最后幸存的那个数字在每一轮中的下标,由于是倒着推导,所以当最后仅幸存一个数字时,它的下标是0
for (int i = 2; i <= n; i++) {//i表示当前环的长度,从长度为2的环开始倒推
ans = (ans + m) % i;
}
return ans;
}
}
175. 组合两个表【简单题】
# Write your MySQL query statement below
select Person.firstname,Person.lastname,Address.city,Address.state
from Person left join Address
on Person.personId = Address.personId;
1581. 进店却未进行过交易的顾客【简单题】
代码:
# Write your MySQL query statement below
# 查找 customer_id 和 当前customer对应的visit_id数据的个数
select Visits.customer_id,count(Visits.visit_id) as count_no_trans
from Visits left join Transactions # Visits左连Transactions
on Visits.visit_id = Transactions.visit_id # 连接点为 visit_id
where Transactions.transaction_id is null # 查找条件为 transaction_id是null
group by Visits.customer_id; # 以customer_id分组
1148. 文章浏览 I【简单题】
代码:
# Write your MySQL query statement below
select distinct author_id as `id` # 查找author_id 去除重复的
from Views # 从Views表
where author_id = viewer_id # 查找条件为 author_id = viewer_id
group by article_id # 以article_id 分组
order by id; # 将 id 升序排列