写点什么

ARTS_20200520

用户头像
凌轩
关注
发布于: 2020 年 05 月 20 日

AIgorithm



题目:

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。



说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?



示例 1:

输入: [2,2,1]

输出: 1

示例 2:



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

输出: 4

通过次数214,416



来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/single-number

问题:

由于加上了时间复杂度必须是 O(n) ,并且空间复杂度为 O(1) 的条件,因此不能用排序方法,也不能使用 map 数据结构。

答案是使用 位操作Bit Operation 来解此题。

public static int singleNumber(int[] nums) {
int result = 0;
int len = nums.length;
for (int i = 0; i < len; i++) {
result = result ^ nums[i];
}
return result;
}



Review



MongoDB中使用聚合(aggregate), 处理数据(诸如统计平均值,求和等

https://docs.mongodb.com/manual/aggregation/



Tip



使用 mongo aggregate 统计数据

function countBytes(beginTime, endTime) {
var total = 0;
var dayArray = new Array();
db.test.aggregate([
{
$match: {
"incomingTime": {$gte: new Date(beginTime), $lt: new Date(endTime)},
'externalFilling.state': 'Finished'
}
},
{
$project: {
day: {$dateToString: {format: "%Y-%m-%d", date: "$incomingTime"}},
bytes: "$data.final.typeInfoBytes",
_id: 0
}
},
{
$group: {
_id: {day: "$day"},
bytes: {$sum: "$bytes"}
}
},
{
$project: {
day: "$_id.day",
bytes: "$bytes",
_id: 0
}
},
{$sort: {"day": 1}}
]).map(function (detail) {
total += detail.bytes;
dayArray.push(detail);
});
return {"total": total, "detail": dayArray};
}
countBytes(beginTime, endTime);



Share



必须首推皓叔的博文

如何超过大多数人

https://coolshell.cn/articles/19464.html



用户头像

凌轩

关注

摸鱼不成,默默搬砖 2018.09.26 加入

还未添加个人简介

评论

发布
暂无评论
ARTS_20200520