遍历

golang刷题之连续子数组的最大和

佐手、 提交于 2020-01-28 04:55:38
HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)----------------剑指offer 思路:设置两个值,一个max保存遍历数组中最大的值,一个sum,遍历数组之和,每遍历一次比较一次,max<sum,max=sum 代码: func maxArraySum(nums []int)int { max := nums[0] sum := 0 for _, num := range nums{ //fmt.Print(n) if sum > 0{ sum += num }else{ sum = num } if max < sum{ max = sum } } return max } 来源: CSDN 作者: 十二年蝉 链接: https://blog.csdn.net/qq_34859228/article/details/104047927

BUPT复试专题—二叉排序树(2012)

十年热恋 提交于 2020-01-28 04:20:53
https://www.nowcoder.com/practice/b42cfd38923c4b72bde19b795e78bcb3?tpId=67&tqId=29644&rp=0&ru=/kaoyan/retest/1005&qru=/ta/bupt-kaoyan/question-ranking 题目描述 输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。 输入描述: 输入第一行包括一个整数n(1<=n<=100)。接下来的一行包括n个整数。 输出描述: 可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。每种遍历结果输出一行。每行最后一个数据之后有一个空格。输入中可能有重复元素,但是输出的二叉树遍历序列中重复元素不用输出。 示例1 输入 51 6 5 9 8 输出 1 6 5 9 8 1 5 6 8 9 5 8 9 6 1 建立一颗二叉排序树三序遍历即可 #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<string.h> #include<string> #include<queue> using namespace std; struct Node { int val; Node *lch;

Map 集合遍历的4种方法

拈花ヽ惹草 提交于 2020-01-28 03:03:53
ap 集合初始化时,指定集合初始值大小。 说明:HashMap 使用 HashMap(int initialCapacity) 初始化。 正例:initialCapacity = (需要存储的元素个数 / 负载因子) + 1。注意负载因子(即 loaderfactor)默认为 0.75,如果暂时无法确定初始值大小,请设置为 16(即默认值)。 反例:HashMap 需要放置 1024 个元素,由于没有设置容量初始大小,随着元素不断增加,容量 7 次被迫扩大,resize 需要重建 hash 表,严重影响性能。 /** * * 测试类 */ @org.junit.Test public void testHashMap() { Map<String, String> map = new HashMap<>(4); map.put("1", "a"); map.put("2", "b"); map.put("3", "c"); map.put("4", "d"); System.out.println("------------------- map.keySet()-------------------------"); //获取所有的 key,根据 key 取出对应的value for (String key : map.keySet()) { System.out.println

【 VUE 指令 】- 8 v-for

折月煮酒 提交于 2020-01-28 00:23:20
1 v-for 遍历数据渲染页面是非常常用的需求,Vue 中通过 v-for 指令来实现。 1.1 遍历数组 语法: v-for="item in items" items :要遍历的数组,需要在vue的data中定义好。 item :迭代得到的数组元素的别名 示例 < div id = " app " > < ul > 来源: CSDN 作者: 不知所起 一往而深 链接: https://blog.csdn.net/weixin_42112635/article/details/104095913

MySQL索引详解

故事扮演 提交于 2020-01-27 20:35:09
目录 B-树 B+树 B+树相比B-树的优势 磁盘IO次数更少 查询性能更稳定 范围查询更简单 B-树 在B-树中,无论中间节点还是叶子节点都带有卫星数据(数据行记录) B+树 在B+树中,只有叶子节点带有卫星数据,中间节点仅仅是索引。 在MySQL中,主键索引的叶子节点直接包含数据行记录,二级索引叶子节点则包含主键键值,需要回表,即回主键索引中查找数据行记录 B+树相比B-树的优势 磁盘IO次数更少 B+树的每个节点都对应着一个磁盘页,树的高度意味着查询所经历的磁盘IO的次数。 由于B+树中间节点不包含数据记录,所以同样大小的磁盘页可以容纳更多的节点元素(关键字),B+树比B-树更加“矮胖”,磁盘IO次数更少。 查询性能更稳定 B+树的查询必须查到叶子节点,而B-树只要找到匹配元素即可,无论位于中间节点还是叶子节点,因此B-树查找性能不稳定(最好只查到根节点,最坏到叶子节点) 范围查询更简单 对于范围查询,比如要查3-11之间的元素 B-树的范围查找过程 自顶向下,查找到范围的下限(3) 中序遍历到元素6 中序遍历到元素8 中序遍历到元素9 中序遍历到元素11,遍历结束 B+树的范围查找过程 自顶向下,查找到范围的下限(3) 通过链表指针,遍历到元素6, 8 通过链表指针,遍历到元素9, 11,遍历结束 参考:https://blog.csdn.net/qq_35571554

xzc最喜欢的二叉树 Apare_xzc

☆樱花仙子☆ 提交于 2020-01-27 20:22:30
我出的第一道题 题目名称:XZC最喜欢的二叉树 题目时限:1000ms 最大内存:128M 题目描述: 众所周知,树是XZC最喜欢的数据结构。 二叉树是树的一种,是每个节点的子节点个数都不超过2的树。经典的二叉树有:红黑树,替罪羊树,胜者树,败者树…二叉树的遍历方式也有很多种,如:层序遍历,先序遍历(有人也称作前序遍历),中序遍历,后续遍历。 今天,XZC给你出了一道题,题目如下: 给出二叉树的先序遍历和中序遍历,还原二叉树,得到后续遍历,并且求叶子节点的个数以及树的最大深度。 输入: 每个测试文件有多组数据。 输入文件的第一行是一个正整数T(T<=10)代表有T组数据 每组数据的输入有三行 第一行是一个数字n (n<=100),代表二叉树节点的个数 第二行是二叉树的先序遍历,用一个字符串表示,每个字符代表一个节点的值 第三行是二叉树的中序遍历,用一个字符串表示,每个字符代表一个节点的值 (输入保证二叉树每个节点的值各不相同) 输出: 对于每组数据, 在一行输出”Case #x: “(不含引号) 在第二行输出二叉树的后序遍历(行末无空格) 在第二行输入该二叉树叶子节点的个数,具体格式见样例 在第三行输入该二叉树的层数,以及距离根节点最远的一层的叶子节点的值,若有多个符合条件的叶子节点,输入在先序遍历中序列最靠前的。 两组数据之间输出一个空行,最后一个样例后面不输入空行。

链式前向星

瘦欲@ 提交于 2020-01-27 04:11:17
【前向星】 不要把前向星想成什么高深莫测的东西,它其实就是一种边集数组。 前向星特别适合用来优化SPFA、DFS、BFS。 前向星构建过程如下: 先把图中每条边的起点按照从小到大的顺序排序,如果起点一样,那么把终点按照从小到大的顺序排序。此过程目的是确立图中边的位序。 构建数组head[i],记录图中以点i为起点的所有出边的第一个位序。 构建数组len[i],记录图中以点i为起点的出边数。 针对上图,假设我们输入边的顺序为: 1 2 2 3 3 4 1 3 4 1 1 5 4 5 那么依据上述规则排完序后就得到: 编号: 1 2 3 4 5 6 7 起点u: 1 1 1 2 3 4 4 终点v: 2 3 5 3 4 1 5 最终得到head[i]、len[i]值如下: head[1]=1 len[1]=3 head[2]=4 len[2]=1 head[3]=5 len[3]=1 head[4]=6 len[4]=2 显然,利用前向星会使用到排序操作,所以即便是使用效率较高的快速排序,前向星算法的时间复杂度也至少为O(nlog(n))。 【链式前向星】 如果说邻接表是不好写但效率好,邻接矩阵是好写但效率低的话,前向星就是一个相对中庸的数据结构。前向星固然好写,但效率并不高。而在优化为链式前向星后,效率也得到了较大的提升。虽然说,世界上对链式前向星的使用并不是很广泛

mysql exists 和 in的效率比较

寵の児 提交于 2020-01-27 04:04:53
mysql exists 和 in的效率比较 这条语句适用于a表比b表大的情况 select * from ecs_goods a where cat_id in(select cat_id from ecs_category); 这条语句适用于b表比a表大的情况 select * from ecs_goods a where EXISTS(select cat_id from ecs_category b where a.cat_id = b.cat_id); 原因:(转发) select * from A where id in(select id from B) 以上查询使用了in语句,in()只执行一次,它查出B表中的所有id字段并缓存起来.之后,检查A表的id是否与B表中的id相等,如果相等则将A表的记录加入结果集中,直到遍历完A表的所有记录. 它的查询过程类似于以下过程 List resultSet=[]; Array A=(select * from A); Array B=(select id from B); for(int i=0;i<A.length;i++) { for(int j=0;j<B.length;j++) { if(A[i].id==B[j].id) { resultSet.add(A[i]); break; } } } return

测试

让人想犯罪 __ 提交于 2020-01-27 02:39:19
for循环 目录: for简介 代码格式 语法格式 可被迭代的数据类型 列表 字典 字符串 不可被迭代的数据类型 整数 浮点值 布尔值 空值 整数转化为范围后可被迭代 range(y) range(x, y) range(x, y, i) Peace && Love 迭代列表时获取索引 continue 跳过本次循环 break 跳出循环 思考题 创建一个从1到100的整数列表 九九乘法表 for简介 【循环】:就是依照某些我们编写的特定规则,重复的做一件事。 当你需要重复的“搬砖”的时候,可以用for循环进行遍历,让机器循环的帮你去“搬砖”,彻底解放我们的双手。 【遍历】:所谓遍历,就是一遍一遍的经历。放到程序中,就是让程序一遍又一遍的经历重跑同一段代码程序的场景。和循环一个意思。 代码格式 nameList = ['小石头', 'xing.org1^', '郭菊锋']for name in nameList: print(name) # 3次循环依次打印出'小石头', 'xing.org1^', '郭菊锋'else: print('else情况') # else每次都会经过,当for循环执行完毕后执行else的代码块print('===for循环完毕===')print(name) # 郭菊锋 以上代码中,我们定义了一个列表数据nameList,并且使用for循环

Dictionary泛型集合

让人想犯罪 __ 提交于 2020-01-27 02:28:28
文章目录 1 Dictionary 1 Dictionary<K, V> 1.1 Dictionary<K, V>简介 关于Dictionary<K, V>泛型集合: Dictionary<K, V>通常称为字典,<K, V>约束集合中元素类型。 编译时检查约束类型,无需装箱拆箱操作,与哈希表操作类似。 Dictionary<K, V>的存储结构: 1.2 Dictionary<K, V>的创建 使用Add添加: //使用Add方法添加 Dictionary < string , Student > stuDic1 = new Dictionary < string , Student > ( ) ; stuDic1 . Add ( "VIP1" , student1 ) ; stuDic1 . Add ( "VIP2" , student2 ) ; stuDic1 . Add ( "VIP3" , student3 ) ; stuDic1 . Add ( "VIP4" , student4 ) ; stuDic1 . Add ( "VIP5" , student5 ) ; 使用集合初始化器: //使用集合初始化器 Dictionary < string , Student > stuDic2 = new Dictionary < string , Student > ( ) {