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程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
随机推荐
- 线程的join()方法
官网描述 join public final void join() throws InterruptedException Waits for this thread to die. An invo ...
- Linux安装elasticsearch5全过程(踩坑实录)
Linux版本Centos elasticsearch版本:5.5 1.下载elasticsearch https://artifacts.elastic.co/downloads/elasticse ...
- 预处理、const、static与sizeof-static全局变量与普通的全局变量有什么区别
1:全局变量的说明之前再加上static就构成了静态的全局变量.全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式.这两者在存储方式上并无不同.这两者的区别在于,非静态全局变量的作用域是整 ...
- 第10组Alpha冲刺(3/4)
队名:凹凸曼 组长博客 作业博客 组员实践情况 童景霖 过去两天完成了哪些任务 文字/口头描述 继续学习Android studio和Java 制作登录注册界面前端 展示GitHub当日代码/文档签入 ...
- Elasticsearch6.5.1破解x-pack,设置密码并使用head插件登陆。
#没有许可证的es无法持久的设置密码,而且使用一段时间后会过期,过期后,一些功能无法被使用,例如head插件无法看到es状态. 下图是过期的es的状态,可通过此url查看:http://ip:port ...
- 解决“mysql不是内部/外部命令,也不是可执行程序,也不是批处理文件”
解决方案: 1.切换到mysql.exe文件所在目录: 2.将mysql.exe文件所在目录添加到操作系统内的环境变量中: 如何添加环境变量: 1.右击“我的电脑”——>属性——>高级—— ...
- 自动化测试 | 好用的自动化测试工具Top 10
欲善其事必先利其器,本文从软件测试人员痛点出发,介绍如何先从工具选择上取得优势,在有限的时间内完成工作.经常有人在公众号留言或是后台咨询,做自动化测试用哪个工具好,或是学哪门编程语言好呢? 这个时候总 ...
- linux内核中的MFD子系统
分析用的内核版本为5.1.3 1.MFD全称 Multi-function Device,多功能设备 2. 为何会出现MFD子系统 由于出现了一类具有多种功能的外围设备或cpu内部集成的硬件模块 3. ...
- ORACLE11G报错汇总
============安装类================= 安装Oracle 11g R2的过程中,在新建数据库实例时出现了该错误,如果选择"忽略"就会出现ora-28000 ...
- React Native面试题记录
一.ES6中增加了那些新的功能? 1> for-of循环: 使用 for-of 的时候,循环的是数组内部的元素且不会出现 for-in 中将附加属性也遍历的情况,其次,循环变量的类型和其在数组中 ...