leetcode-287-297

leetcode287题297题

leetcode287题题目:

给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。

示例:

输入:[1,3,4,2,2]

输出:2

输入:[3,1,3,4,2]

输出:3

解答:
1
2
3
4
5
6
7
8
9
10
11
12
13
var findDuplicate = function(nums) {
var result;
nums.sort(compare);
for(var i=1;i<nums.length;i++){
if(nums[i]==nums[i-1]){
result = nums[i];
}
}
return result;
};
function compare(a,b){
return a-b;
}

leetcode297题:

序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。

请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。

示例:

示例

解答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/

/**
* Encodes a tree to a single string.
*
* @param {TreeNode} root
* @return {string}
*/
var serialize = function(root) {
var result = [];
function sertalize1(root){//此处使用深度优先遍历(或先序遍历)来进行实现的
if(root==null){
result.push('#');
return;
}
result.push(root.val);
sertalize1(root.left);
sertalize1(root.right);
}
sertalize1(root);
return result.join(',');//输出是用逗号连接起来的字符串
//例题中的例子输出为:"1,2,#,#,3,4,#,#,5,#,#"
};

/**
* Decodes your encoded data to tree.
*
* @param {string} data
* @return {TreeNode}
*/
var deserialize = function(data) {
data = data.split(",");
var index = 0;

function deserializer(data) {
if(index > data.length || data[index] === "#") {
return null;
}

var node = new TreeNode(parseInt(data[index]));
index++;
node.left = deserializer(data);
index++;
node.right = deserializer(data);
return node;
}
return deserializer(data);
};

/**
* Your functions will be called as such:
* deserialize(serialize(root));
*/
分享到