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程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
随机推荐
- pyqt5的简单进度条程序
# -*- coding: utf-8 -*- # @Author : FELIX # @Date : 2018/5/17 16:43 from PyQt5.QtCore import QBasicT ...
- 源码安装ROS Melodic Python3 指南 (转) + 安装记录
这篇文章转自 https://blog.csdn.net/id9502/article/details/80410989 csdn真是作大死,我保存这篇博客的时候还不需要花钱就能看,现在居然要v ...
- Linux下更换为阿里yum源
更新日期: 2018-08-06 1.yum源的工作原理 yum是为了解决安装包的依赖关系而生的,如果要源码安装一个软件,需要频繁下载各个包,并解决包的依赖关系.这就好比学门课程,要学会这门课程,就要 ...
- js off动画事件
每个假期都过得如此快10月一是2017年最后一个假期.不由感叹时间过得真快.我已上个月离职,一直在家休整,今天得空吧前几天学习的知识真理一下. 今天主要整理关于,offset系列的,动画是咱们全都工作 ...
- JavaScript设计模式—适配器模式
适配器模式介绍 旧接口格式和使用者不兼容,中间加一个适配器转换接口 在生活中,我们有许多的适配器,例如iPhone7以后的耳机接口从3.5mm圆孔接口更改成为了苹果专属的 lightning接口.许多 ...
- Apache搭建简单的图片访问服务器
安装apache后,修改httpd.conf文件 将根目录修改为你图片所在目录 DocumentRoot有这么一行,修改成你要指向的路径 DocumentRoot "/yang/pic&qu ...
- OSX 改变PHP安装路径环境变量
当使用XAMPP来学习Laravel的时候,用composer安装laravel总是报错,说mcrypt is required ,但是当我在终端里打印 which php 显示的是usr/bin/p ...
- LeetCode 146. LRU缓存机制(LRU Cache)
题目描述 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . 获取数据 get(key) - 如果密钥 (k ...
- other备忘
wps CONCATENATE 只是因为格式 设置成了文本,把这列 格式 设置成 常规,双击下 结果就出来了 https://zhidao.baidu.com/question/21208668961 ...
- git 撤消修改
第一步: 执行git reflog获取你自己的commit id(这里就是A1).当然你可以在eclipse的git插件中通过查看历史得到 第二步: 执行git reset –hard A1(这里的A ...