ARTS 第一周打卡
Algorithm : 做一个 leetcode 的算法题
1.只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
思路:线性时间复杂度(O(n) --> 排除简单的双重for循环!!!)
不使用额外的空间(O(1) --> 排序hash、数组下标等做法!!! )
解题思路一:除了某个元素只出现一次以外,其余每个元素均出现两次;根据这条特性,可以想到 ^= 算法(相同为假,不同为真)!
class Solution {
public:
int singleNumber(vector<int>& nums) {
int iRes = ;
for(int i = ; i < nums.size(); i++)
{
iRes ^= nums[i];
}
return iRes;
}
};
解题思路二:先排序,然后比较步长为2之间的元素
class Solution {
public:
int singleNumber(vector<int>& nums) {
//方法一:这里算不算用额外的空间
std::sort(nums.begin(), nums.end());
for(int i = ; i < nums.size(); i += )
{
if(i + >= nums.size() || nums[i] != nums[i + ])
{
return nums[i];
}
}
return ;
}
};
Review : 阅读并点评一篇英文技术文章
原文地址:https://redis.io/
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.
Redis是一个开源(BSD许可)的内存数据结构存储,用作数据库、缓存和消息代理;
It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams.
它支持诸如字符串、hash散列表、集合、带范围查询的排序集合、位图、hyperloglogs、带半径查询和流的地理空间索引等数据结构。
Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via
Redis Sentinel and automatic partitioning with Redis Cluster. Learn more →
Redis具有内置的复制、Lua脚本、LRU清除、事务和不同级别的磁盘持久性、和通过Redis Sentinel(哨兵)和Redis CLuster(Redis 集群)的自动分区提供高可用性。
备注:
1.hyperloglogs:
1.1 原文链接:https://redis.io/topics/data-types-intro#hyperloglogs
HyperLogLogs
A HyperLogLog is a probabilistic data structure used in order to count unique things (technically this is referred to estimating the cardinality of a set).
HyperLogLog 是一种概率数据结构,用于计算唯一的东西(技术上这是指估算集合的基数);
Usually counting unique items requires using an amount of memory proportional to the number of items you want to count, because you need to remember the elements you have already seen in the past in order to avoid counting them multiple times.
通常计算唯一项要求使用与要计算的项数成比例 的内存,因为需要记住在过去已经见过的元素以避免重复计算;
However there is a set of algorithms that trade memory for precision: you end with
an estimated measure with a standard error, which in the case of the Redis implementation is less than 1%.
然而这里有一种内存换精度的算法:你以一个标准误差的估计度量结束,在redis实现中,标准误差小于1%;
The magic of this algorithm is that you no longer need to use an amount of memory proportional to the number of items counted, and instead can use a constant amount of memory! 12k bytes in the worst case, or a lot less if your HyperLogLog (We'll just call them HLL from now) has seen very few elements.
这个算法的神奇之处在于:不在需要与计算项等比例的内存,可以使用固定的内存,最坏的情况下是12k byte,然后HLL会看到少了很多元素;
HLLs in Redis, while technically a different data structure, are encoded as a Redis string, so you can call GET to serialize a HLL, and SET to deserialize it back to the
server.
在Redis中, HLLs虽然在技术上是一种不同的数据结构,但是它被编码为redis string,所以你可以使用GET 序列化HLL,使用SET反序列化到服务器上;
2.LRU清除:
什么是LRU算法? LRU是Least Recently Used的缩写,即最近最少使用,常用于页面置换算法,是为虚拟页式存储管理服务的。
LRU原理和Redis实现:https://zhuanlan.zhihu.com/p/34133067
Tips : 学习一个技术技巧
数据结构和算法一些常用技巧总结:
- 巧用数组下标
- 巧用取余
- 巧用双指针
- 巧用移位运算
- 设置哨兵位
原文链接:https://blog.csdn.net/feiyanaffection/article/details/83477404
Share : 分享一篇有观点和思考的技术文章
https://mp.weixin.qq.com/s/I3hqH0zPcSctlR6b0Sn1qA
ARTS 第一周打卡的更多相关文章
- ARTS第一周
开始进行的第一周. 1.Algorithm:每周至少做一个 leetcode 的算法题2.Review:阅读并点评至少一篇英文技术文章3.Tip:学习至少一个技术技巧4.Share:分享一篇有观点和思 ...
- ARTS第九周打卡
Algorithm : 做一个 leetcode 的算法题 /* 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. ...
- 201871010123-吴丽丽《面向对象程序设计(Java)》第一周学习总结
201871010123-吴丽丽<面向对象程序设计 ...
- 第一周 总结笔记 / 斯坦福-Machine Learning-Andrew Ng
课程主页:https://www.coursera.org/learn/machine-learning/home/welcome 收集再多的资料也没用,关键是要自己理解总结,做笔记就是一个归纳总结的 ...
- Surprise团队第一周项目总结
Surprise团队第一周项目总结 团队项目 基本内容 五子棋(Gobang)的开发与应用 利用Android Studio设计一款五子棋游戏,并丰富其内涵 预期目标 实现人人模式:2个用户可以在同一 ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 20145206邹京儒《Java程序设计》第一周学习总结
20145206 <Java程序设计>第1周学习总结 教材学习内容总结 1.三大平台:Java SE.Java EE与Java ME.Java SE是各应用平台的基础,分为四个主要的部分: ...
- 20145304 刘钦令 Java程序设计第一周学习总结
20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
随机推荐
- 第67节:Java中的JDBC运用
第67节:Java中的JDBC运用 https://www.jianshu.com/p/628a9ba1b205
- java8 stream流操作的flatMap(流的扁平化)
https://mp.weixin.qq.com/s/7Fqb6tAucrl8UmyiY78AXg https://blog.csdn.net/Mark_Chao/article/details/80 ...
- delete elasticsearch
在elasticsearch-head 插件中遇到的删除特定的数据需求 DELETE /索引名/需要清空的type/_query { "query": { "match_ ...
- 利用JDK自带工具监控JVMCPU和内存指标
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- OUC_Summer Training_ DIV2_#7 718
是18号做的题啦,现在才把报告补上是以前不重视报告的原因吧,不过现在真的很喜欢写报告,也希望能写一些有意义的东西出来. A - Dragons Time Limit:2000MS Memory ...
- Linux设备驱动程序 之 内核符号表
insmod使用公共内核符号表来解析模块中未定义的符号.功能内核符号表中包含了所有全局内核项(函数和变量)的地址,这是实现模块化驱动程序所必须的.当模块装载到内核后,它所导出的任何符号都会变成内核符号 ...
- ArcGIS Python根据的点坐标,创建点要素
import arcpy # A list of coordinate pairs # pointList = [[1,2],[3,5],[7,3]] # Create an empty Point ...
- IDEA 运行单元测试报错 @{argLine}
sentinel是今年阿里开源的高可用防护的流量管理框架. git地址:https://github.com/alibaba/Sentinel wiki:https://github.com/alib ...
- Oracle事务、视图、序列
回顾什么是事务? 一个不可分割的子操作形成一个整体,该整体要么全部执行成功,要么全部执行失败.例如:转帐 回顾为什么要用事务? 如果不用事务的话,为转帐为例,可能出现一个用户钱增加了,另一个用户钱不变 ...
- 机器学习之保存与加载.pickle模型文件
import pickle from sklearn.externals import joblib from sklearn.svm import SVC from sklearn import d ...