每周完成一个ARTS
每周至少做一个 leetcode 的算法题
阅读并点评至少一篇英文技术文章
学习至少一个技术技巧
分享一篇有观点和思考的技术文章。
(也就是 Algorithm、Review、Tip、Share 简称ARTS)
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
思路:滑动窗口,两个指针分别表示子串的两个边界,用数组来保存字符的状态,0表示不存在,1表示已存在,当右边界向右滑动时,若新的元素不存在时,则继续向右滑动;若新元素已经存在时,则左边界向右滑动,直到新元素不再重复为止。
时间复杂度:O(n)
int lengthOfLongestSubstring(string s) {
if (s.size() <= 1)
{
return s.size();
}
int i = 0, j = 1;
int str[128] = {0};
str[s[i]] = 1;
int maxlen = 0;
int len = 0;
while(j < s.size())
{
if (str[s[j]] == 0)
{
str[s[j++]] = 1;
len = j - i;
if (len > maxlen)
{
maxlen = len;
}
}
else
{
str[s[i++]] = 0;
}
}
return maxlen;
}
https://tour.golang.org/moretypes/1
指针
结构体
结构体指针
结构体常量
数组
切片
声明形式:a []T
数组赋值给切片,需要两个索引,高低边界,以:分隔
对应数组边界以[)半开取值,即包含第一个索引的值,但不饮食最后一个索引的值
切片类似数组的引用
切片常量
像没有长度的数组
默认切片
切片长度与最大长度
空切片
通过make内存函数来创建切片
make([]T, len, cap)创建长度为len、最大长度为cap的切片,元素值为0
切片的切片
切片能包含任务类型,当然也可以包含其他切片
切片添加元素
如果切片的上层数组空间不足以添加被给的元素,则重新申请新的数组,返回值指向新申请的数组
range
map
map映射key value键值对
map的的空值是nil,nil没有key,key值也不能被添加
make函数返回一个给定类型的map
map变量
已赋值的map变量
若顶级的类型只是类型名,则可忽略类型名
map操作
函数值
闭包
利用的redis的单线程的特性,使用setnx命令来实现分布式锁
原文:https://www.cnblogs.com/JesseTsou/p/11331530.html