leetcode-617-621

leetcode 617题 621题

leetcode617题题目

给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。

你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。example1

解答:
1
2
3
4
5
6
7
8
9
10
11
12
var mergeTrees = function(t1, t2) {
if(t1==null){
return t2;
}
if(t2==null){
return t1;
}
t1.val += t2.val;
t1.left = mergeTrees(t1.left,t2.left);
t1.right = mergeTrees(t1.right,t2.right);
return t1;
};

leetcode621题题目:

给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务,或者在待命状态。

然而,两个相同种类的任务之间必须有长度为 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。

你需要计算完成所有任务所需要的最短时间。

示例:

    输入: tasks = [“A”,”A”,”A”,”B”,”B”,”B”], n = 2
    输出: 8
    执行顺序: A -> B -> (待命) -> A -> B -> (待命) -> A -> B.

解答:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var leastInterval = function(tasks, n) {
var obj = {};
for(var i=0;i<tasks.length;i++){
if(obj[tasks[i]]!=undefined){
obj[tasks[i]]++;
}else{
obj[tasks[i]]=1;
}
}
var maxValue = 0;
var count=0;
for(var key in obj){
if(maxValue<obj[key]){
maxValue = obj[key];
}
}

for(var key in obj){
if(maxValue==obj[key]){
count++;
}
}
return Math.max.call(null,tasks.length,(maxValue-1)*(n+1)+count);
};

taylor swift

分享到