自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Freya说她写不好博客

太阳没有迎面而来,是我在朝他而去~

  • 博客(61)
  • 收藏
  • 关注

转载 Redis快速入门

是以key-value形式存储,和传统的关系型数据库不一样.不一定遵循传统数据库的一些基本要求.(非关系型的,分布式的,开源的,水平可拓展的Redis服务器是单线程的,不并行,线程安全优点对数据高并发读写(直接是内存中进行读写的)对海量数据的高效率存储和访问对数据的可拓展性和高可用性.单线程操作,每个操作都是原子操作,没有并发相关问题(redis 6之后支持多线程,即多条等待队列)补:Redis为什么不用多线程?CPU处理线程/进程时的逻辑:时间片切换Redis是单个CPU绑定一块内存。

2023-05-27 19:58:58 216 1

原创 leetcode刷题 (9.11) 二叉树

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。对于二叉树的所有路径中的每条路径,当遍历到叶子节点的时候为当前路径的结束。:给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。:给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。:给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。

2022-09-13 17:19:50 1089

原创 leetcode刷题 (9.2) 动态规划

这里,max中dp[i]是因为在内层for中dp[i]一直被赋值,每尝试一种方式,dp[i]都会被新的大值给覆盖,所以里面也要有dp[i]。:给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。dp[i]:拆分数字i,可以得到的最大乘积为dp[i]。dp[i]:1到整数i的二叉搜索树个数。确定dp数组以及下标的含义。确定dp数组以及下标的含义。

2022-09-05 19:24:42 148

原创 Python项目:基于COVID-19做出的居民饮食结构调整方案

通过画出154个国家COVID-19确诊率,死亡率和恢复率,我们发现,这三个数据都不能单一的作为一个国家疫情防控好坏的标准(有的国家虽然感染人数多,但是死亡率低,我视为低风险国家)。全球角度:通过观察世界各国居民受疫情的影响,分析低风险国家和高风险国家,找到能增强对COVID-19抵抗力的某类食物。good_whole_mean_list是为了得出防控好的国家居民每日膳食的每类食物种类的比例。通过分析疫情控制得好的国家和疫情控制得差的国家,得出某种食物与COVID-19的联系。主要用了三个数据集,

2022-09-03 17:55:58 471

原创 leetcode刷题 (9.1) 动态规划

定义了一个vector容器,元素类型为vector,初始化为包含m个vector对象,每个对象都是一个新创立的vector对象的拷贝,而这个新创立的vector对象被初始化为包含n个0。:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。dp[i]:表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。dp[i]:表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。注意:第一行和第一列dp都是1,只有一条路径(不是看累加的)。

2022-09-02 17:21:42 649

原创 牛客网 ACM 模式 输入输出

昨晚做深信服笔试,第一碰到ACM模式…结果输入输出调不明白,凉的很彻底。

2022-09-02 16:27:32 1232

原创 leetcode刷题 (8.31) 动态规划

某一问题有很多重叠子问题,使用动态规划是最有效的。是由前一个状态推导出来的,而是局部直接选最优的。

2022-08-31 21:22:56 46

原创 leetcode刷题 (8.30) 栈和队列

当数据类型并不是基本数据类型,而是自定义的数据类型时,就不能用greater或less的比较方式了,而是需要自定义比较方式。

2022-08-31 10:13:41 169

原创 leetcode刷题 (8.29) 栈和队列

栈和队列在STL中都不是容器,而是容器适配器。栈和队列提供push 和 pop 等接口,但不提供迭代器(iterator)。不像是set 或者map 提供迭代器iterator来遍历所有元素。

2022-08-30 15:38:20 346

原创 Python排序算法实现

若想最后序列从小到大,就建立大根堆,是反着来的。实际就是在分组中插排,不断缩小分组的长度。

2022-08-27 15:54:38 214

原创 leetcode刷题 (8.26) 二叉树

二叉树可以链式存储,也可以顺序存储。链式存储方式就用指针, 顺序存储的方式用数组。

2022-08-27 11:54:32 591

原创 leetcode刷题 (6.1) 字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。表示在s+s中从下标开始找s字符串,返回匹配的第一个下标。若s中没有重复子字符串,只能找到第二个s,返回的刚好是s.size()。:双倍字符串法,新字符串s+s中掐头去尾后,s仍在其中,则s是由多个子串重复构成的。...

2022-08-26 18:21:00 458

原创 leetcode刷题 (5.31) 字符串

344题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。思路:双指针,区别于反转链表(字符串是数组,在内存中连续分布)笔记:利用Python可以同时赋值的特性,数组的swap操作可以同时赋值为什么不需要设置tmp变量来保存中间值?因为赋值操作是等号从右往左的顺序执行,单纯把数值s.size() - 1, 0 赋给 s[left], s[right],而分开操作,

2022-06-01 02:28:30 148

原创 leetcode刷题 (5.29) 哈希表

1. 快乐数202题目:编写一个算法来判断一个数 n 是不是快乐数。「快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1,那么这个数就是快乐数。如果 n 是 快乐数 就返回 true ;不是,则返回 false 。输入:n = 19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 =

2022-05-30 00:53:05 85

原创 leetcode刷题 (5.28) 哈希表

1. 有效的字母异位词242题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。输入: s = "anagram", t = "nagaram"输出: true输入: s = "rat", t = "car"输出: false思路:用一个长度为26的数组表示哈希表,s中字母在哈希表中对应位置(s[i] - ‘a’)加一,t中字母再依次减一,最后看哈希表是否全为0,否则

2022-05-29 00:31:57 75

原创 Review of Machine Learning

1. Unit 1: Review of probability1.1 stochastic and state space状态空间就是所有可能取值1.2 Bayesian vs Frequentist (goodnotes)1.3 离散分布伯努利分布(Bernoulli):即0-1分布二项分布(Binomial):即n重伯努利实验中心极限定理(Central Limited Theorem)(goodnotes)1.4 连续分布概率密度函数均匀分布(Uniform)高斯/正态分

2022-05-19 20:46:15 199

原创 Review of Big Data System

1. Database systems1.1 BD定义——5VVolume(大量):包括采集,存储,管理,分析的数据量很大,超出了传统数据库软件工具能力范围的海量数据集合。因此,对数据存储的要求变大。Velocity(高速):数据增长速度快,要求实时分析与数据处理及丢弃,而非事后批处理。这是大数据区别于传统数据挖掘的地方。Variety(多样):数据种类和来源多样性,包括不同种类的数据,比如文本图像音频视频定位等,以及各种结构化,半结构化,非结构化数据,不连贯的语义或句意。这对数据处理能力提出了更

2022-05-15 19:07:38 147

原创 leetcode刷题 (5.13)链表

1. 环形链表 II142题目:给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。输入:head = [3,2,0,-4], pos =

2022-05-13 17:17:54 387

原创 leetcode刷题 (5.12)链表

1. 链表相交面试02.07题目:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Intersected

2022-05-12 17:14:09 73

原创 leetcode刷题 (5.11)链表

1. 删除链表的倒数第N个节点19题目:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]输入:head = [1], n = 1输出:[]思路:快慢指针法,通过fast-slow=n就能通过一次遍历就找到逆序n的位置(slow所指结点)。快慢指针法可以用于对倒数第n个数操作类型笔记:注意:让fast先走和后面fast,slow一起走,要分开写在两个循环里,不然[1],1的情况就会陷入死

2022-05-11 17:52:29 135

原创 leetcode刷题 (5.10)链表

1. 两两交换链表中的节点24题目:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)输入:head = [1,2,3,4]输出:[2,1,4,3]输入:head = []输出:[]输入:head = [1]输出:[1]思路:一开始想要不设奇偶指针,后面发现没必要,只要完成一次交换后指针p往后移两位即可。C++:Python:由于Python没有设置临时结点tmp,要先步骤三,防止原步骤二断线后找不

2022-05-10 16:47:08 321

原创 leetcode刷题 (5.9)链表

1. 反转链表206题目:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]思路:改变链表指针的指向,不用重新创建一个链表,浪费内存。双指针法,递归法(与双指针一样,除了不用更新两个指针向前走)笔记:C++:从后往前迭代有点想不通,抓住:迭代函数return的是新链表的head,迭代函数调用时按从前往后的顺序不断给他喂。C++:// 双指针法class Solution {public:

2022-05-09 16:36:36 445

原创 leetcode刷题 (5.8)链表

1. 设计链表707题目:设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点

2022-05-09 00:36:45 67

原创 leetcode刷题 (5.7)链表

1. 移除链表元素203题目:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]思路:设置哑结点,这样头结点和其他结点处理一样。笔记:C++链表可以直接赋空值,也可以指向空值。// 赋空值ListNode* head = NULL;// 指向空p->next = NULL;Python:

2022-05-07 17:50:28 972

原创 leetcode刷题 (5.6) 数组

1. 螺旋矩阵 II59题目:给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]思路:不要去想着数学计算出第一行、第二行…的规律。直接每圈分成四块(上行,右行,下行,左行)按顺序分别赋值,然后只需知道要转几圈,每圈的长度,中心点要不要单独处理即可(这才是需要数学找规律的)。笔记:C++:offset的处理很妙,初始1因为数组起始0,第二

2022-05-06 19:11:49 703

原创 leetcode刷题 (5.5) 数组

1. 长度最小的子数组209题目:给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。输入:target = 11, nums = [1,1,1,1,1,1

2022-05-06 02:00:21 1187

原创 leetcode刷题 (5.4) 数组

1. 有序数组的平方977题目:给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]思路:左右指针比较,把平方大的结果填进新数组尾部,index向前滑笔记:vector是一个动态的序列容器,相当于一个size可变的数组。初始化向量容器://对容

2022-05-04 19:08:02 321

原创 leetcode刷题 (5.2) 数组

1. 二分查找704题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1思路:计算middle,

2022-05-04 16:10:56 648

原创 Python 基础(十一)Pandas库

pandas

2022-04-25 00:33:42 557

原创 Python 基础(十)Numpy库

一、为什么用Numpy库Python for循环低效Numpy高效的原因:1)编译型语言vs解释型语言:Numpy是C语言编写的2)连续单一类型存储vs分散多变类型存储:Numpy数组内的数据类型必须统一且连续存储在内存中3)多线程vs单线程:Python语言执行时有线程锁,不是真正的多线程并行执行,C可以什么时候用Numpy:在数据处理的过程中,遇到使用“python for循环”实现一些向量化、矩阵化操作时,优先考虑Numpy。如:两向量点乘,矩阵乘法二、Numpy数组的创建从.

2021-03-11 15:34:37 183

原创 Python 基础(九)Python标准库

一、time库获取现在时间1)time.localtime() 本地时间,time.ctime()——获得本地时间字符串2)time.gmtime() UTC世界统一时间时间戳与计时器1)time.time() 返回自计数以来的秒数,记录sleep2)time.perf_counter() 随意取一个时间点,记录现在时间到该时间点的间隔秒数,记录sleep2)time.process_time() 随意取一个时间点,记录现在时间到该时间点的间隔秒数,不记录sleepperf_.

2021-03-10 16:58:34 82

原创 Python 基础(八)进阶

一、数据类型的底层实现列表1)复制为什么修改浅拷贝后的列表,原列表数据也被修改了?2)列表的底层实现列表在内存中是如何存储的?列表只是存储了元素的地址,元素是分散地存储在内存中直接赋值:取个别名浅拷贝:将地址复制了一份新的,还是指向原来的元素浅拷贝的操作:总结:对于可变类型,如:列表、字典,改变浅拷贝后的值,指向的地址不变,原值会受影响,对于不可变类型,如:元组、数字、字符串,改变浅拷贝后的值,指向的地址更改,原值不会受影响。引入深拷贝:将所有层级的相关元素全部.

2021-03-09 16:45:22 113

翻译 Python 基础(七)文件、异常和模块

一、文件的读写文件的打开:三要素with open("/Users/freya/Downloads/test2.txt","r",encoding = "gbk") as f: //第一步:打开文件 text = f.read() //第二步:读取文件 print(text)1)文件路径:可以用完整路径,或者程序与文件在同一文件夹,可简化成文件名2)打开模式.

2021-03-08 14:59:41 122

原创 Python 基础(六)类

一、类的定义定义:三要素——类名、属性、方法类的属性:即类内部的变量 def__init__(self,要传递的参数) 初始化类的参数class Car(): """模拟汽车""" def __init__(self, brand, model, year): """初始化汽车属性""" #相当于类内部的变量 self.brand = brand #汽车的品牌 self.model = m.

2021-03-04 15:42:54 446 1

原创 Python 基础(五)函数

一、函数的定义及调用定义:三要素——参数、函数体、返回值调用:函数名(参数)二、参数传递形参:函数定义时的参数,即变量名实参:函数调用时的参数,即变量的值位置参数:实参按顺序赋值给形参,必须一一对应,一般在参数较少时用关键字参数:直呼其名地赋值,用于参数较多时位置参数可与关键字参数混合使用,但位置参数必须放在前,不能为同一形参重复赋值默认参数:定义阶段就给形参赋值,放在最后,也可以正常赋值,机器学习库中类的方法中常见,必须为不可变类型让参数变成可选:将.

2021-03-03 15:09:34 698 1

原创 Python 基础(四)程序控制结构

一、条件测试(结果为布尔类型)比较运算:>、<、>=、<=、==、!=、非空逻辑运算与and、或or、非not优先级:非>与>或存在运算元素 in / not in 列表/字符串二、分支结构——if语句单分支、二分支(else)、多分支(elif + else)、嵌套语句三、遍历——for循环break 结束整个循环,continue 结束本次循环...

2021-03-02 14:18:57 96

原创 Python 基础(三)组合数据结构

一、列表定义:是一个有序序列、可使用多种类型元素、支持修改字符串、元组、集合转列表:用list(可迭代对象)产生列表,可迭代对象——字符串、元组、集合、range()等性质1)列表的长度——len(列表)2)列表的索引——与同为序列类型的字符串完全相同3)列表的切片——同字符串列表的操作符拼接:list1+list2、复制:n*list列表的操作符1)增加元素末尾增加元素——列表.append(待增元素)任意位置插入——列表.insert(待增元素)末尾.

2021-03-01 11:12:07 546

原创 Python 基础(二)基本数据类型

一、数字类型整数——不同进制的转换(转换结果为字符串类型)浮点数——不确定性(计算机采用二进制小数表示浮点数的小数部分,但部分小数不能被二进制小数完全表示)一般来说够用了,但也可以用round()函数四舍五入复数——a+bj注:虚部系数为1时,也要写出:2+1j数字运算操作符(a 操作符 b)整数商//注:除法运算结果是浮点数数字运算操作函数 function(x,…)求绝对值abs()、幂次方pow(x,n)四舍五入round(x,n)、序列最大/小值.

2021-02-23 12:05:04 129 1

原创 Python 基础(一)基本语法元素

一、数据类型数字类型 (整型int、浮点型float、复数complex)、字符串类型str、布尔类型bool组合类型:列表、元组、字典、集合列表:i=[1,2,3,4], i[0]元组:不可变的列表(定义好后,元素不支持修改),i=(1,2,3,4), i[0]字典:在内部是无序的,并不能通过位置来访问,只能由键值对访问集合:一系列互不相等的元素,无序二、变量变量命名——下划线(变量和函数名)、驼峰体(类名)赋值:一般赋值(等号)增量赋值:x+=10、x=x+10打包赋值.

2021-02-22 16:10:49 65

原创 算法设计策略

一、算法分析技术循环斐波那契算法递归二、直接法穷举法递推法(数学题)迭代法(辗转法)三、分治法step1——划分step2——求解子问题step3——合并四、贪心法贪心法的核心是每次都要保证能获得局部最优解迪杰斯特拉和克鲁斯卡尔算法都是贪心法。贪心法具有以下特点:多阶段决策(解决问题的过程可以分为若干阶段)无后向性(每一阶段面临的子问题只与当前阶...

2021-02-21 16:08:21 700

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除