哈希表

Linux第六天

旧巷老猫 提交于 2019-11-29 19:35:25
网卡配置:图形界面,命令行 修改网卡的配置文件vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 修改: BOOTPROTO=none/static ONBOOT=yes在系统启动时激活网卡 添加 IPADDR=192.168. . NETMASK=255.255.255.0 GATEWAY=192.168. .1 添加IP地址 IPAADDR1=192.168. . 重启服务:systemctl restart network TYPE=Ethernet 配置网络接口类型 BOOTPROTO=dhcp 系统启动地址协议 none不使用启动地址协议static静态地址协议 DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=eno16777736 UUID=500fd5f7-bcb1-4cf6-a40a-014486b6b375 DEVICE=eno16777736 网络接口名称 ONBOOT=no 系统启动时是否激活该网络接口

day07总结

大憨熊 提交于 2019-11-29 19:20:46
目录 元组内置方法 字典内置方法 散列表/哈希表存储数据 集合内置方法 数据类型总结 存值个数 有序or无序 可变or不可变 深浅拷贝(只针对可变数据类型) 深浅拷贝 拷贝 浅拷贝 深拷贝 元组内置方法 什么是元组(tuple):只可取不可更改的列表,元组一创建就被写死了 作用:元组一创建就被写死了 定义方式:()内用逗号隔开多个元素(可以为任意数据类型) 如果元组只有一个元素,必须得加逗号 使用方法 索引取值 索引切片 for循环 成员运算 len长度 index获取元素索引 count计数 有序or无序 有序 可变or不可变 压根没有这一说 定义元祖--》占用内存小--》写死了 字典内置方法 作用 储存多个数据,对每个数据具有描述 定义方式 {}内用逗号隔开多个键key(具有描述意义,不能为可变数据类型):值value(任意数据类型)对 使用方式 按key取值/按key修改值 添加值,没有就添加,有就修改 for循环 成员运算 len长度 keys/values/items get 获取(没有就返回None,可以给定一个默认值 update 更新(等同于list里的extend) fromkeys setdefault(只添加不修改) 有序or无序 无序 可变or不可变 可变 散列表/哈希表存储数据 相比较列表,哈希表插入/删除数据更快 首先对key做了哈希处理

day07 学习小结

左心房为你撑大大i 提交于 2019-11-29 19:18:17
目录 元组内置方法 字典内置方法 散列表/哈希表存储数据 集合内置方法 数据类型总结 存值个数 有序or无序 可变or不可变 深浅拷贝(只针对可变数据类型) 深浅拷贝 拷贝 浅拷贝 深拷贝 元组内置方法 什么是元组(tuple):只可取不可更改的列表,元组一创建就被写死了 作用:元组一创建就被写死了 定义方式:()内用逗号隔开多个元素(可以为任意数据类型) 如果元组只有一个元素,必须得加逗号 使用方法 索引取值 索引切片 for循环 成员运算 len长度 index获取元素索引 count计数 有序or无序 有序 可变or不可变 压根没有这一说 定义元祖--》占用内存小--》写死了 字典内置方法 作用 储存多个数据,对每个数据具有描述 定义方式 {}内用逗号隔开多个键key(具有描述意义,不能为可变数据类型):值value(任意数据类型)对 使用方式 按key取值/按key修改值 添加值,没有就添加,有就修改 for循环 成员运算 len长度 keys/values/items get 获取(没有就返回None,可以给定一个默认值 update 更新(等同于list里的extend) fromkeys setdefault(只添加不修改) 有序or无序 无序 可变or不可变 可变 散列表/哈希表存储数据 相比较列表,哈希表插入/删除数据更快 首先对key做了哈希处理

博客07

*爱你&永不变心* 提交于 2019-11-29 19:15:33
目录 1. 元组(tuple) 1. 作用 2. 定义方式 3. 使用方法 4. 有序or无序 5. 可变or不可变 2. 字典(基于散列表(哈希)实现存储) 1. 作用 2. 定义方式 3. 使用方法 4. 有序or无序 5. 可变or不可变 3. 散列表(哈希表) 4. 集合(基于散列表(哈希)实现存储) 1. 作用 2. 定义方式 (set) 3. 使用方法 4. 有序or无序 5. 可变or不可变 5. Pycharm中代码变黄的原因 6.数据类型总结 7. 深浅拷贝 (1) 拷贝 (2)浅拷贝 (3)深拷贝 1. 元组(tuple) 元组和列表用法相同,只是元组只可取,不可修改,元组一创建就被写死 元组相对于列表的优点在于:占用内存小。不用判断是否增加元组的内存分配,少了这个判断增加内存。 1. 作用 存储多个元素 2. 定义方式 tup = tuple((1, 2, 3)) print(tup, type(tup)) # 如果元组只有一个元素,必须得加逗号,否则括号只是被当做一个运算符的优先级的作用 tup1 = (1,) print(tup1, type(tup1)) 3. 使用方法 # 1. 索引取值 print(tup[0]) # 2. 索引切片 print(tup[0:3]) # 3. for循环 for i in tup: print(i) # 4. 成员运算

PHP使用redis的Hash

血红的双手。 提交于 2019-11-29 18:48:25
#Hash是什么 redis中文文档 Redis的哈希值是字符串字段和字符串值之间的映射,所以他们是表示对象的完美数据类型 在Redis中的哈希值,可存储超过400十亿键值对。 简单理解为PHP中的二维数组,哈希中需要注意的有三个概念:key,域,值 一个key可以有多个域,一个域对应一个值(值必须是字符串,如果是数组最好用json处理一下) #PHP中使用 //链接redis $redis = new Redis(); $redis->connect('127.0.0.1', 6379); //设置域 $field = $this->getField($data); $redis->hSet($key,$field, json_encode($data)); 其他常用命令 命令 作用 返回值 hDel 删除哈希表key中一个或多个字段,传入不存在的字段将被忽略 返回成功删除的字段数 hExists 判断哈希表key中是否存在给定的字段 存在true,不存在false hGet 从哈希表key中获取给定的一个字段值 存在返回字段值,不存在返回false hGetAll 从哈希表key中获取全部的字段和值 存在返回关联数组,不存在返回空数组 hIncrBy 整形数值递增(有符号) 递增后的值 hIncrByFloat 浮点型数值递增(有符号) 递增后的值 hKeys

Redis五大数据类型详解

别来无恙 提交于 2019-11-29 16:44:39
关于Redis的五大数据类型,它们分别为:String、List、Hash、Set、SortSet。本文将会从它的 底层数据结构 、 常用操作命令 、一些 特点 和 实际应用 这几个方面进行解析。对于数据结构的解析,本文只会从大的方面来解析,不会介绍详细的代码实现。 String 1.实现结构   String是Redis中最常用的一种数据类型,也是Redis中最简单的一种数据类型。首先,表面上它是字符串,但其实他可以灵活的表示 字符串、整数、浮点数 3种值。Redis会自动的识别这3种值。那么,String的底层数据机构又是怎样的呢?由于Redis是使用c语言实现的,而c语言中没有String这一数据类型,那么就需要自己实现一个类似于String的 结构体 。它的名字就叫做SDS(simple dynamic string),下面是它的代码结构。 1 typedef struct sdshdr { 2 // buf中已经占用的字符长度 3 unsigned int len; 4 // buf中剩余可用的字符长度 5 unsigned int free; 6 // 数据空间 7 char buf[]; 8 } 如果有了解过Java集合框架类的朋友都知道,这种结构与集合中 动态数组结构 类似,那么就会涉及到一系列的扩容判断和操作,但这些具体的做法在这里不深入讲解

20. 有效的括号

会有一股神秘感。 提交于 2019-11-29 16:37:52
思路一 找到字符串中所有存在的括号对儿形式,把他们换位空字符,这样操作下来,如果是有效的括号,那么字符串最后一定为空,不为空说明无效。 class Solution(object): def isValid(self, s): if not s: return True while '{}' in s or '[]'in s or '()' in s: #检查是否有这样的括号对儿 s = s.replace('{}','') s = s.replace('[]','') s = s.replace('()','') return s == '' 思路二 借用一个辅助栈,利用哈希表对字符串进行遍历。 栈先入后出特点恰好与本题括号排序特点一致,即若遇到左括号入栈,遇到右括号时将对应栈顶左括号出栈,则遍历完所有括号后 stack 仍然为空; 建立哈希表 dic 构建左右括号对应关系:key左括号,value右括号;这样查询 2个括号是否对应只需 O(1) 时间复杂度;建立栈 stack,遍历字符串 s 并按照算法流程一一判断。 边界条件 栈 stack 为空: 此时 stack.pop() 操作会报错;因此,我们采用一个取巧方法,给 stack 赋初值 ?? ,并在哈希表 dic 中建立 key: ‘?’,value:’?'的对应关系予以配合。此时当 stack 为空且 c 为右括号时

Day-07-哈希表和字符串 Leetcode-409, 290, 49, 3, 187, 76

核能气质少年 提交于 2019-11-29 15:12:57
目录 例一:LeetCode409 例二:LeetCode290 例三:LeetCode49 例四:LeetCode3 例五:LeetCode187 例六:LeetCode76 // //最简单的哈希,字符哈希 #include <stdio.h> #include <string> int main() { int char_map[128] = { 0 }; std::string str = "abcdefgaaxxy"; for (int i = 0; i < str.length(); i++) { char_map[str[i]]++; } for (int i = 0; i < 128; i++) { if (char_map[i] > 0) { printf("[%c][%d] : %d\n", i, i, char_map[i]); } } return 0; } //利用哈希表排序整数 时间复杂度为O(表长 + n)n为元素个数 #include <stdio.h> int main() { int random[10] = { 999, 1, 444, 7, 20, 9, 1, 3, 7, 7 }; int hash_map[1000] = { 0 }; for (int i = 0; i < 10; i++) { hash_map[random[i]]++;

哈希表

喜夏-厌秋 提交于 2019-11-29 13:16:52
1. 为什么需要哈希表? 哈希表提供了key与value的映射关系,给出key可以高效地找到匹配的value,时间复杂度接近于O(1),适用于空间足够的情况下快速查找。 2. 哈希函数 哈希函数类似于中转站,用于将key与数组下标进行映射 哈希函数的特点: (1) 输出值得数据长度不变; (2) 相同的输入输出也一定相同; (3) 输入相似的数据,即使相差一个比特位,输出也会截然不同; (4) 输入截然不同的值,输出的哈希值会以低概率出现; (5) 不可能根据哈希值返回计算出原始数据; (6) 计算相对简单。 3. 哈希表的读写操作 哈希冲突: 指的是随着Entry的增加,不同Entry计算出来的额数组下标是相同的。 解决哈希冲突的办法: 开放寻址法和链表法。 为什么需要扩容? 经过多次元素插入后,哈希表达到一定的饱和度时,哈希冲突的概率会提高,这样一来,大量的元素拥挤在相同的数组下标位置,形成很长的链表,对后续的插入操作和查询操作的性能都有很大影响。 来源: https://blog.csdn.net/a1558451960/article/details/100821264

LeetCode题解001:两数之和

这一生的挚爱 提交于 2019-11-29 12:36:47
两数之和 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] Java: 方法一:暴力法 暴力法很简单,就是用两遍循环的方式遍历nums class Solution { public int[] twoSum(int[] nums, int target) { for (int i = 0; i < nums.length; i++) { for (int j = i + 1; j < nums.length; j++) { if (nums[j] == target - nums[i]) { return new int[] { i, j }; } } } throw new IllegalArgumentException("No two sum solution"); } } 复杂度分析: 时间复杂度:O(n^2) 对于每个元素,我们试图通过遍历数组的其余部分来寻找它所对应的目标元素,这将耗费 O(n) 的时间。因此时间复杂度为 O(n^2)