求帮忙解答一下,D1M电商怎么样?刚拿到Offer,想知道值不值得去。

简介: 如果斐波那契数小于8位的就输出这个数,大于8位的就输出前四位,以及后四位

  • 通过打表可以发现到39位为止都不超过8位数,当n>39时再分别求前四位和后四位 F(n)的前四位(整数部分只是贡献结果末尾的0罢了)

a、凡是用到递归,就画递归树

具体来讲就是分而治之,把一个大问题分成很多相同或相似的小问题,小问题再分,直到无法再分,所有小问题的结果合起来就是最终结果
常见的有排序中的快速排序归并排序分治经常和递归一起提及
a、该问题缩小到一定规模就可以解决
b、该问题可以分成若干小问题
c、该问题若干小问题的解可以合并成这个问题的答案
d、该问题分出来的若干小问题都是独立的
若满足a、b,却不满足c,可以考虑贪心算法或者动态规划算法
若不满足d方法,可以考虑一下动态规划算法(这样效率更高)



这个题目老实说,很难,主要是题目读不懂的难,在题目读不懂的情况下我们可以从示例入手


// 说明不是有效括号,入栈 // 计算最后一个括号和留下的最后一个不是括号的

双指针问题主要有两方面,分为快慢指针左右指针
快慢指针主要针对链表,如链表是否有环
左右指针主要针对数组或字符串,如二分查找

主要是设置两个指针,快指针比满指针步长多1,如果没有环,快指针会遇到null,如果有环,快指针和满指针会相遇


b、链表环的起始位置问题
已知链表有环,求环的起始位置
假设在某点相遇,此时快指针走了2k步,慢指针走了k步
若把慢指针或快指针中的一个设为头指针,然后快慢指针一起前进,最后相遇的点就是环的初始位置,因为他们都走了k-m


c、寻找无环链表的中步
可以通过让快指针走两步,慢指针走一步,当快指针走到终点的时候,满指针就走到中间了


d、寻找链表倒数第k个
这个的思路是让快指针先走k步
然后让快慢指针都同时走1步,当快指针到null后,满指针指向的就是第k个


这道题其实用快慢指针是特别方便的,而看出它需要使用快慢指针也是特别重要的,根据这道题,我们可以总结出什么情况下需要使用快慢指针
①当值或其他什么可以作为下标的时候,且永远不会回到0号下标(因为我们知道快慢指针通常用来解决有环问题,而很多时候不会明确告诉你有环,那么什么时候有环呢?只要有重复
②我们把某个重复的值就作为环开始的地方,需要求这个地方就用快慢指针
③快慢指针不一定只适合于链表,数组等顺序结构也是可以用的


这一道题最主要的是要注意慢指针在遇到重复元素后不移动,而快会诊要移动

除此之外,这道题也可以使用循环



// 因为题目要求索引从1开始



说白了就是维护一个窗口,然后不断移动窗口边界,最后取出窗口里的数据

先分析一下这道题,首先,他只是要找T中所有字母,也就是说T=‘ABC’,S=‘BAC’这种顺序不同的也可以,不要求顺序,只要有那个字母就OK
同理,如果T=‘AABC’,还是找有两个A,一个B,一个C的串
而且因为要求的是子串,所以找到的这几个字母一定是连续的
具体原理就是,先移动右指针,直到找到一个能包含所有需要字符的串(右边的最后一个一定是需要的字符)
然后移动左指针,看到哪一步就不能再动了(其实就是移动到第一个能匹配上的就不能动了)
但是又因为有可能在右指针后面还有能匹配上的,而且能组成最小匹配子串,所以移动右指针这个东西应当是外层循环,终止条件是到达s字符串末尾
另外这是左开右闭即 [left, right) 的,所以需要把最开始的那一个放进去

// start是最小覆盖子串开始的下标,valid是指满足need条件的字符个数 // len指的是最小覆盖子串的长度 // 窗口数据的一系列更新 // 因为这个其实是左开右闭,所以最开始窗口里什么都没有 // 如果窗口里有需要的就更新valid // 看窗口是否要通过移动左边的指针来收缩窗口 // 如果窗口大小跟要求的t的长度相等就得收缩 // 只要能找到更小的子串个数,就更新start和len // 记录一下将要移出窗口的值 // 移动左指针,看能不能找到小的 // 看一下之前移出的是不是也能匹配上 // 如果能匹配上,就把之前放到window里的减去一个

c、找出所有字母异位词


// 看拓宽右边的同时左边是否要收缩


首先,单调栈是一个特别的数据结构,说白了也是栈,只不过入栈的数据都是有顺序的(升序或降序)
这里主要使用单调栈来解决环形数组

a、求距离最近的大数/小数
问:给一个数组,返回一个等长的数组,返回数组每个值代表比原数组这个下标元素值a更大的值b,且b的下标要大于a的下标,若没有则该元素返回-1

就相当于排队,第一高的把后面的挡到了,就不需要管后面矮的了
从后往前入栈,只要倒数第n+1个比倒数第n个高,把倒数第n个及n-1,n-2之类的出栈,倒数第n+1进栈

// 把放进栈里小于前面数的都清掉,毕竟就算再要更前面的数时 // 前面已经有大的了,也不会看后面的

虽然我这里用了一个 for 循环和一个 while 循环,但是其实实际上一个数也顶多入栈一次,出栈一次,也就是说时间复杂度不为O(n2),而是O(n)

给你一个数组 T = [73, 74, 75, 71, 69, 72, 76, 73],这个数组存放的是近几天的天气气温。返回一个数组,计算:对于每一天,你还要至少等多少天才能等到一个更暖和的气温;如果等不到那一天,填 0 。


同样是求最近距离的,依旧给一个数组[2, 1, 2, 4, 3],但是因为首尾相连,所以结果为[4,2,4,-1,4]
首先明确一下,计算机是线性结构,没有真正意义上的环形数组,一般情况下的环形数组,要实现就是通过 % 取模得到的

我们看一下这道题,如果给的是一个环形数组,要求结果,依旧是使用比身高,如图
这里解决方法其实有两种,第一个是把数组再复制一次得到一个新数组,新数组依旧用原来的方法,最后得到的结果截取一半使用即可

这里的话采用的是循环数组的特性(也就是%取模来做)

// 假装把这个数组复制了一份


// 这里是假设该节点有左节点,则该节点为根节点,应该先遍历该节点的右节点 // 否则就代表这个节点之前已经遍历了右节点,直接把这个根节点拿到即可

然后我们来总结一下关于树的遍历模板(非迭代方法)
首先树的三种遍历其实都是DFS,一般情况下我们都知道DFS经常和回溯在一起,且DFS经常是递归实现的,所以这里用递归肯定很简单
而使用迭代其实掌握到模板也很简单
DFS使用的主要的数据结构就是栈(因为先进后出),来记录走过的路

// 定义一个栈,储存之前走过的路 // 要继续得到结果的条件,肯定是该节点不为空,或者当前栈中还有东西没遍历完 // 另外,无论是先序、中序还是后序这个条件都是相同的 // 这个条件是什么时候应该入栈(存储过往路径) // 无论先序、中序、后序都是这个条件 // 什么时候入栈,什么时候移动root // 入栈的是什么,自身(中序和后序)还是右边(先序) // 以及怎么移动,向左(先序和中序)还是向右(后序其实是左右判断) // 把之前储存的拿出来 // 是要继续往右吗(中序和后序),有条件吗(后序有条件),条件是什么

需要知道当前是哪儿一层的

// 重点,这是能够得到哪儿一层的

e、通过中序遍历和后序遍历找一棵树
首先后序遍历的最后一个元素一定是根,而在中序遍历中这个元素的左边是左子树,右边是右子树,再放到后序遍历中通过个数找到左子树和右子树,再求最后一个是根,这样循环


f、从前序与中序遍历序列构造二叉树
前面讲了后序和中序,这个前序和中序其实也差不多,只是根出现的位置问题,所以直接上代码


g、填充每个节点的下一个右侧节点指针
这道题的巧妙之处在于利用了完美二叉树,而且让递归函数的参数不是一个


h、填充每个节点的下一个右侧节点指针 II
然后进阶版,非完美二叉树
不多说,其实就是完美二叉树多了几种判断情况,具体见代码吧


i、二叉树的最近公共祖先
其实遇到二叉树,就要先思考,使用哪种遍历,我们这里是找公共祖先的,所以很自然的能想到是从底向上,而从底向上的遍历最显著的就是后序遍历先序遍历是自顶向下),确认了使用后序后,我们这里采用递归,就把后序遍历改写一下就可以了


j、二叉树的序列化和反序列化


这一道题其实最开始应该首先是想到object的,但是object是无序的,同理,set也是无序的,所以我们可以自然而然地想到map,在js中map是根据插入顺序来的,这里跟java不同(java的map无序,hashMap根据hashcode排序跟object差不多)

map和set的共同点和区别

1、map是根据插入顺序来排序的(FIFO),而set无序
2、map是键值对,set只有值


然后我们再来讲讲 页面置换算法(这东西可以在操作系统里看到)
页面置换算法:当要访问某页面,但是内存不够时,就会将内存中的某一页面替换成新的页面,计算到底是哪儿个页面被置换出去的算法就叫做页面置换算法
如果算法不够好,有可能刚换出去的页面又要被换进来,这种情况叫做抖动(把时间都浪费在置换页面上了)
这里主要介绍4种页面置换算法
相当于看一下现在放在页面区域的页码哪个越靠后或者没有在后面被使用的就置换出去
这个就相当于队列,先进先出,没有考虑过之后是否使用这种,所以这也是最坏的置换方法

LRU置换算法(又称最久未被使用的页面置换方法)
望文生义,把储存的页面中最少被使用的给置换出去
但其实这个的实现方法是有一个栈,然后把使用了的从栈的某个位置拿出,放到栈底,而如果需要置换的时候直接从栈顶拿就行
LFU页面置换算法(最少使用)
给每个页面计数,如果使用的次数少就被置换出去

// 为什么用map而不用object,map有序,按照插入的顺序


首先这里的子数组,就其实类似于子串,毕竟子串和子数组都是紧挨着的,而子序列是不需要紧挨的

// res[i]表示最后%k的值为i的子数组个数 // 表示能被整除的总共的次数 // 为什么这里又是1呢,毕竟要的是子数组,子数组里不能为空嘛 // 所以把最开始的那个去掉 // 这里要考虑如果有负会怎么样,因为是mod后依旧有负数,所以加一个K就能变成正的 // 不能用负数,毕竟没有负数的下标


看到这个格式统一的字符串,很容易就想到了正则表达式

代码放完,我们来重温一下正则表达式
首先,正则表达式对象是 RegExp,我们在本题中有了子匹配,而子匹配就是存在 RegExp 中的以 $1、$2 等的属性
这里有个很重要的一点,那就是子匹配的 $1、$2会被覆盖! 所以我们的正则匹配里不能写成全局的(也就是 g
以上为根据这道题延伸出来的正则
接下来系统地说一下正则
以上叫做匹配元字符,除了这个还有匹配修饰符,如下
我们可以看出如果字符串中有**[]、()、|、-**这些,就必须加斜杠(\)进行转义
相当于构造函数的斜杠是字面量的两倍

如果只有元字符,没有量词,那么那个元字符代表的必须出现且只能出现一次,而加上量词后出现次数由量词决定

除了以上的,还有一些特殊的字符如


然后我们再来看看使用正则表达式的方法(都是 RegExp.prototype 上的)
而字符串的方法主要是两个,searchreplace


给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

求在该柱状图中,能够勾勒出来的矩形的最大面积。
先谈谈这道题的基本思路,首先我们要求面积,那么就可以很自然的想到公式面积=宽*高,而在这里面高是最好得到的,就是heights[i],而宽的话要求到就需要一点技巧
因为我们最开始是不知道要怎么求到宽的,所以最先就想到暴力解法,如图
然后我们就可以找到规律,如果后面的那根柱子比当前的高,那么宽度就不能向后继续延伸,如果前面某根柱子比当前的高,宽度也不能继续向前延伸,也就是如下所示
我们要找左边一个什么什么怎么怎么样,右边什么什么怎么怎么样,很自然就能想到用栈(这里可以回忆一下之前求括号那个题,就跟求括号一样,后面的结果会引起前面结果计算完成,也可能要等到很后面的结果才能使前面能计算到结果),所以用
好了,接下来我们想想栈的条件,我们可以很清楚地发现当我们拿到某个heights[i]且当这个heights[i]比heigths[i - 1]小时,它是能决定前面是已经得到后面的边界了,这样我们就可以推出,放在栈里的应该是比后一个小的,而如果每一个都比后一个小,那么这个栈应当是单调递增栈
单调递增栈出来了,现在就应该考虑进栈的元素是什么,因为我们要的是宽度,宽度与下标有关,所以下标进栈
其他具体的我们从代码上来看

// 为什么要在头尾都各加一根长度为0的柱子 // 我们这里想想,我们是什么时候会进行计算max? // 当后面的柱子比我们放在栈顶的柱子低的时候就要计算 // 那么如果我们不在尾巴上添加一根为0的柱子(毕竟没有为负的),怎么才能计算到最后一根柱子的max呢 // 毕竟这里的max其实是每个柱子的max最后取的最大值 // 至于在头加一个0,是为了方便,这样下标就表示是第几根柱子 // 只有当新判断的下标比栈顶高时才进行入栈和计算面积操作 // 一般判断这种的就得先看一下栈是否为空 // 我们每次在最后都会把i给push到栈顶,就相当于是下一轮的i-1 // 所以如果是第一次的话其实这个就是栈顶,直接写heigths[i - 1]也是可以的 // 一直比较不能作为终止条件 // 毕竟while的条件是要后面比栈顶矮 // 毕竟要求的面积是前一个柱子的


关于这个的时间复杂度,感觉上可能跟暴力解法差不多,都是O(n2)的样子,但实际上不是,毕竟进栈和出栈都只有一次,所以时间复杂度应该是O(n)



首先,镜像对称就相当于人的左手=人的右手,也就是说左节点的左孩子=右节点的右孩子,左节点的右孩子=右节点的左孩子
另外,我们要明确,我们比较的时候是从上往下比,如果父节点都不同,那就没必要比较子节点
我们这里先使用递归,所以要找到终止条件,条件很好找,因为我们比较的是左右节点的左右孩子,传进去的参数就是两个节点(两个孩子),所以只要这两个节点都为空,则正确,若两个节点只有一个是空,则错误(不对称)

我们再来思考一下迭代的写法,首先递归转迭代一般都需要一个东西存储之前递归的入参,这里我们因为是要从上往下比较,所以是先进先出,很自然地就能想到用队列,然后使用循环并写出条件(如果在递归中中返回true的,这里就应该是continue,毕竟不能只因为一个条件正确就认为这个结果正确,但是false不一样,有一个是错的,结果必定是错的)


我再做第9的时候发现自己使用递归还是有点懵逼,这里总结一下套路
找入参和具体一次的操作
找返回给上一次递归的值

我们来看一下这道题,首先我们因为看到树其实很自然就能想到要用递归或者迭代(毕竟树可以拆分成多个子树,每个子树做的操作其实都差不多)
然后我们再看一下这道题的三要素:
①终止条件:这道题要求最大深度很显然是要遍历整棵树,而遍历终止的条件就是该节点为空,所以我们的终止条件就找到了,此时的深度就是0
②入参及其操作:我们知道了终止条件,而且也说明了跟每个节点有关,所以我们的入参就是每个节点
每次要做的操作就是上一层的层数+1,就能得到当前的深度
那么这样就有一个问题,我们怎么拿到上一层的深度,很自然地就能想到放到入参里,当然我们也可以想到因为我们有返回值,返回的就是深度,所以直接用返回值+1就ok
所以,最后我们的入参是节点
要做的操作就是深度+1和再次调用函数拿左右节点
③要返回些什么,首先,我们要求的是最大深度,所以我们应该返回的就是当前的深度,然后让上一层通过Math.max来比较即可

稍微进阶一下,求N叉树的深度,这个其实就相当于把比较条件变了一下,然后加个循环


b、两两交换链表中的结点
这一道题我最初是想用快慢指针来做的,结果发现因为是原地交换,有些就会出问题(主要是我菜)
所以这里后来看了下题解,写出了递归的思路
首先,我们依旧来想想为什么要用递归,其实这个分解开来看,就是多个两两交换,而且步骤是重复的,所以很自然能想到递归
然后我们想想什么地方需要递归,什么地方需要我们自己做操作
整个链表可以分为三个部分,目前需要交换的头的部分,交换的后面那个部分,需要递归重复交换的部分
至于为什么没要把之前做过操作的也算进一部分,是因为都已经做过操作了,之后不会做操作,放进来也没啥用
红箭头其实就是我们递归函数的入参,它会不断向后面移动
至于什么时候终止呢?如果红箭头,或者粉箭头为空了,自然就不需要进行递归了
为什么选红箭头和粉箭头为终止条件,而不是用绿箭头呢?因为我们交换的就是红箭头和粉箭头,也就是说递归的终止条件是自己进行操作的部分的条件判断
然后我们再来看一下返回什么,之前有说到入参是不断向后移动的红箭头,那么就相当于是当前的粉色箭头,而因为终止条件也是需要返回值的,那个时候要么自己是空的,要么自己的下一个是空的,所以返回入参(为什么不直接返回null呢,因为我们的入参是红箭头,但我们可能后箭头有值而粉箭头没值)


这一道题其实是求二叉树深度的变种,因为我们要判断是否为二叉平衡树,只要左子树是平衡树,右子树也是平衡树且左右子树的深度的绝对值不大于1即可
从这个定义中可以看出,主要要求的是两个东西,所以按常理,我们的返回值也应当是两个(如果只有一个,那么因为是递归,就无法能够进行下一步操作)
然后要明确一点,返回值≠入参,一般情况下二叉树的入参都是节点,可能还会增加些其他的东西,如深度之类的,这里我我们的返回值是{深度,是否为平衡树},那就没必要让入参也是深度了,所以决定入参就是节点
要做的事情其实就一个,判断左右两边是否为平衡树,有一个不是就返回false,并把深度也带上,如果两边深度的绝对值大于1,也返回深度和false,其他情况就说明暂且该子树为平衡树,返回深度和true
这里有一个难点,那就是深度怎么求?
我们要判断是否为平衡树,应当是自底向上的,但我们递归的顺序是自顶向下的,所以肯定会浪费很多空间,但我们求深度,肯定是自底向上的,毕竟我们没办法在根节点就拿到深度,而左右子树的深度又可能是不一样的,所以应当用Math.max来比较一下
但是实际上,这个的求深度就是二叉树求最大深度(见a或如下)

// 只考虑终止情况下的深度

这道题其实有点坑爹,乍一看,感觉就像是求最大深度,但是有个示例[1, 2],却一直过不了,这是因为我们在最大深度时只判断了是否为空,而没有判断过该节点是否为叶子节点(毕竟求最大深度用的是Math.max,只要它的左节点或右节点为null,用max一定能准确找到最大的那个叶子节点)
所以要判断,如果左边或者右边没有节点了,那么它的深度应当是左边+右边+1(这里是一个很巧妙的公式,毕竟如果一个个判断是左边为空,所以用右边+1,或者是右边为空,用左边+1,都太麻烦了)
这道题其实主要考察终止条件!!


这道题的备注甚骚哈哈哈,这道题就跟镜像差不多,不多讲了,直接上代码



这道题,主要告诉我们其实很多题是真的只能用暴力解法+递归,这已经算是最优解了,所以完全可以先想暴力解法


|| 短路或,如果 a || b 中 a 是能转化出来等于 true 的就返回 a(短路)
短路,也就是说不执行后面的,使用 || 或者 && 都是直接输出值而不会转化成boolean类型
如果n === 0那么就不会进行后面的递归了



这一道题其实如果不考虑时间复杂度和空间复杂度,可以用出栈入栈的暴力解法来(时间复杂度O(n2))
最简单的方法,就是循环遍历,时间为O(n),用两个常数存储
主要思想就是要求数组乘积,其实就是左边*右边,然后找规律
当然拓宽一下思想就是前缀积 * 后缀积


这里其实就只是想说明一下,不是所有题都有算法的,所以我们很多都只有用暴力破解,如果第一反应没想到简便方法,那么就用暴力破解,管它时间复杂度和空间复杂度之类的

就像这一道题,乍一看,根本看不出什么简便方法(我顶多想到可能用用栈这种东西),所以就直接暴力破呗,不要怕


之前做题从来没有关注过提示,这次我们从提示入手,首先,提示说最多有1000个数,意思就是时间复杂度可以为O(n2),然后我们再来思考一下这道题,这道题,初看确实没啥想法,但一想暴力解法肯定不在这个时间复杂度里吧,排除暴力解法,我们再想想
题中有提到,可能会有两个相邻元素交换顺序,或是多个元素倒序,可能看多个元素看不出什么东西来,但是相邻元素交换顺序不就是冒泡吗??所以我们就试试将两个数组都先排序,然后再比较,一看结果,正确的,这就证明了排序可行


b、检查字符串是否包含所有长度为K的二进制子串
首先理解下题意,题意用白话来说就是,通过k来构造k位数的01这种字符串,然后去s中找,但是如果先把所有字符串找到,然后在s中循环找就很麻烦,所以直接通过在s中查找所有类型的字符串,然后看总个数是否大于等于2**k即可


做这道题的时候隐隐约约觉着要用排序+双指针,但是具体怎么搞却没有思路。但是其实这就是一个快排类型的题,难点其实在于不能重复,这个问题,不多说,直接上代码


d、转变数组后最接近目标值的数组和
这道题我已经算是很接近答案了,只不过有两个问题,而最终没有解决主要是两个问题没弄清楚,第一个是数组和最接近这个的意思就是要比较Math.floor()Math.ceil()哪个值更接近平均值,第二个是每次循环都要去找剩下数组的平均值,而不是先判断target和当前的arr[i]的大小后再去找平均值
想清楚这两点,其实这道题就很简单


这道题其实只要别被这么多字难住,然后把某一门课和能达到的课用一个map来存储,里面的key就是那门先修课,value就是能到达的所有课,这样就能判断了


这道题其实从动态规划的角度上不难,只要想到了动态规划就可以,难的是条件的判断,以及最开始所有的初始值为-1这一个点,我之前使用0,但是因为0会出现在grid数组里,所以一直报错,最后才发现是初始值的问题

// 设置为-1是重点 // dp[i][j][k]表示当走到第i行,第一个机器人在j,第二个机器人在k的时候最大的樱桃数目 // 循环找上一层最大的(从左上,上,右上角三个地方中选最大) // 判断值为-1是重点(这代表着这一步不能走)

十进制转换其他进制模板(转更高进制的,低进制就少个判断):

 // bit代表需要转换的进制
 // 这是针对高进制,低进制不需要,毕竟不会有字母
 // 重点,先得到的会放后面

h、从先序遍历还原二叉树
这道题首先因为是先序遍历,所以是根节点 -> 左孩子 -> 右孩子
这其实就是个找父亲的过程,使用深度的单调递增栈,如果孩子深度(即-个数)>栈顶,就入栈,否则出栈,一直循环到找到父亲

// 先构造树,再入栈(所有都要入栈)

这道题的正规做法应该是使用图的DFS或者BFS,奈何我不会(之后补),所以这里采用了维持一个数组,遍历各路径(这里遍历的路径里存在的点要先排序,毕竟遍历的时候是连续的,所以应该先对所有路径排序,保证后面出现的点一定是比前面出现的点大的)


DFS和邻接链表的写法
这里要明确,因为DFS是自顶向下(其实BFS也是自顶向下),所以如果发现能从start到end,就说明要重新规划了
而因为这里最开始是有向图,为了知道什么是能到的,什么是不能到的,就把它弄成无向图,但是要设置一下什么是自己添加的(如果不做成无向图就没办法让这棵树连通,就更没办法往下遍历了)
然后因为图有两条边,但是不能经过同一顶点两次,所以拿个数组存一下,然后再用栈存一下顶点

// 这个的意思是0能到1,也能到2 // 存1是有讲究的,因为是DFS,自顶向下,所以如果能找到start对应的end就说明是要重新规划的,存1方便到时候加 // 因为如果没出现start->end就一定是end->start,如果遍历到了,因为是自底向上,所以不用重新规划 // 保存经过了的节点 // 如果已经走过该节点,就继续循环

这一道题和之前的15题差不多也是三数之和,也是使用排序+双指针


字符串!!,动态规划!!!,跟回文数其实差不多,知道动态规划后基本上5分钟搞定,虽然我这没想出来是动态规划



这个解法是很容易就能想到的,主要就是考虑情况(面向测试用例编程),过滤的时间复杂度是O(N),里面找最小也是O(N),空间复杂度就是O(1)


这个其实我也想到了,就是结合下标和值,但不知道咋的就以为时间复杂度是O(n2),但实际上如果放对位置或者是负数或0,就不会移动位置,所以是O(n2)
而且我们要求出的最小正数是[1, len + 1]里的



很显然是一道能够通过数学方程做出来的题


先明确一下,单独的一个.是可以存在的,不依靠其他的进行判断
但是*要么与前面的某一位一起跟某几个相同的字符匹配,要么跟某一个相同的字符匹配,要么跟后面的空气进行匹配
不匹配和跟跟空气匹配其实结果是一样的,但是我们这里分的条件是匹配不匹配,所以要分开写
因为*依靠前一位,所以初始化的时候就应该让是*的那个结果和倒数第二位的相同

// 这个初始化相当重点 // 如果上一位是.,或者这一位能匹配上 // 那么结果就跟上一次的相同 // 否则如果是*就再继续分 // 如果是其他乱七糟八的还匹配不上,铁定就是false(也就是初始值) // *因为不能单独出现,必须和其他字母一起搭配 // 这里不匹配的情况 // 这里是匹配的情况 // 所以这里分3种情况,以下任意一种成立就可以 // 3、能匹配多个,就说明s少一位p也能匹配上,dp[i - 1][j]

一道相同类型的题,这道题里的*可以单独存在


b、二叉树的最大路径和
这道题其实说难也不难,主要就是看到二叉想遍历,最开始我是在纠结使用中序还是后序(毕竟根节点可能不要,如果用先序就会直接放进去),但其实这道题用递归是最方便的(迭代还太麻烦,我也想不出方法)
以这三个节点为例,就可能是A,AB,AC,ABC
而这里面AB和AC可以合并,因为我们必然会去分开求B、C各自的最大值(毕竟还有ABC)
而且这里很明显可以看出,无论如何A的值都是需要的,然后我们就可以开始递归了(需要递归的点其实就是B和C,因为B和C可以继续往下分,而且B和C可以通过A的left和A的right得到)

// 因为必须包含一个节点,所以初始化的值是根节点的值而不是0 // 这里其实分三种情况,只需要左边,只需要右边,左右都要 // 用左边和0比较,如果0大就说明不要左边 // 用右边和0比较,如果0大就说明不要右边 // 用最大值和左右都要比较 // 因为至少包含一个节点,那么这个节点一定是我每次遍历到的那个节点 // 返回的就是左边或者右边中的最大值

c、二叉搜索树的后序遍历
这道题解法其实用的就是之前的那道h、二叉树的先序遍历里的单调栈
这里说明一下,为什么要用单调栈,二叉搜索树是一种很明显的有序的东西,单调栈里最主要的就是单调俩字,所以单调栈天生跟排序就很有关系
这道题其实也是找父亲,因为最开始我们假设了一个无穷大的根节点,所以来的节点一定是左边的,比这个小的

// 相当于给树再加一个父亲,现在的树时无穷大的数的左子树 // 记录下上一个父亲的结果 // 如果小于栈顶元素,说明右边没东西了,就是往左子树里加东西 // 所以把右边的都从stack里去掉

这道题就一道二元一次方程,通过暴力破就行,难点其实在于找边界,就面向测试用例

// 其实这道题就是二元一次方程 // 我们假设a的字母长度(通过遍历) // 然后再把它拼起来与原pattern比较即可 // flag来表示开头第一个是否为a // 如果在value为空的情况下,a和b同时存在,又因为a的字符不能等于b的字符 // 如果只有a,或者只有b // 遍历a的字母长度 // a可以为空,a也可以为满

1、互不承认的函数在对照文档里搜索到该函数,就能找到用大智慧或通达信代替的函数。

2、有很多函数代码完全相同,可在两种软件里代表的含义完全不同。遇到函数都顺利承认通过,可显示内容有问题时,就要逐项查对,正确更换。

3、本对照表是以通达信函数为基础,逐项在大智慧里找相应函数编写的。还有很多大智慧函数在通达信里没有,并没列出。

1)通达信HIGH(H) 最高价 返回该周期最高价.

大智慧、HIGH(H)最高价 返回该周期最高价.2)通达信LOW(L) 最低价 返回该周期最低价.

大智慧、LOW(L) 最低价 返回该周期最低价.3)通达信CLOSE(C) 收盘价 返回该周期收盘价.

大智慧、CLOSE(C)收盘价 返回该周期收盘价.4)通达信VOL(V) 成交量(手) 返回该周期成交量.

大智慧、VOL(V) 成交量(手) 返回该周期成交5)通达信OPEN(O) 开盘价 返回该周期开盘价.

大智慧、OPEN(O) 开盘价 返回该周期开盘价6)通达信ADVANCE 上涨家数 返回该周期上涨家数.

大智慧、 ADVANCE(本函数仅对大盘有效)7)通达信DECLINE 下跌家数 返回该周期下跌家数.

大智慧、 DECLINE(本函数仅对大盘有效)8)通达信AMOUNT 成交额(元) 返回该周期成交额.

大智慧、AMOUNT 成交额(元) 返回该周期成交额9)通达信VOLINSTK 持仓量 返回期货该周期持仓量.

大智慧、OPENINTEREST,取得该周期持仓量。该函数仅对期货有效。10)通达信 QHJSJ 期货结算价 返回期货该周期结算价.

11)通达信BUYVOL 外盘(手) 返回外盘,即时行情数据.

12)通达信SELVOL 外盘(手) 返回外盘.

13)通达信ISBUYORDER 主动性买单 返回当前成交是否为主动性买单.

大智慧、SBUYORDER当本笔成交为主动性买盘时,返回1,否则为0(本函数仅个股在分笔成交分析周期有效)用法: ISBUYORDER, 当本笔成交为主动性买盘时,返回1,否则为0.

14)通达信DHIGH 不定周期最高价 返回该不定周期最高价.

大智慧、HHVALL(X),求图形可视范围内X最高值。

15)通达信DOPEN 不定周期开盘价 返回该不定周期开盘价.

大智慧、没有16)通达信DLOW 不定周期最低价 返回该不定周期最低价.

大智慧、LLVALL(X),求图形可视范围内X最低值

17)通达信DCLOSE 不定周期收盘价 返回该不定周期收盘价.

大智慧、没有18)通达信DVOL 不定周期成交量价 返回该不定周期成交量价.

大智慧、没有19)通达信NAMELIKE 模糊股票名称 返回股票名称是否以参数开头.

大智慧、STKLABEL,将返回当前股票的代码,例如深发展A将返回'000001'

21)通达信INBLOCK 属于某板块 返回股票是否属于某板块.

2)通达信DATE 日期 取得该周期从1900以来的的年月日. 用法: DATE 例如函数返回1000101,表示2000年1月1日,DATE 后才是真正的日期值;

大智慧、DATE取得该周期从1900以来的年月日,函数返回有效值范围为(1231),表示41231

3)通达信TIME 时间 取得该周期的时分秒. 用法: TIME 函数返回有效值范围为(959)

大智慧、TIME0取得该周期从当日0点以来的秒数。

4)通达信YEAR 年份 取得该周期的年份.

大智慧、YEAR函数返回有效值范围为()

5)通达信MONTH 月份 取得该周期的月份.用法: 函数返回有效值范围为(1-12)

大智慧、MONTH函数返回有效值范围为(1-12)

大智慧、WEEKDAY,取得该周期的星期数,函数返回有效值范围为(0-6),0表示星期天

7)通达信DAY 日 取得该周期的日期.用法: DAY 函数返回有效值范围为(1-31)

大智慧、DAY,取得该周期的日期。

用法:函数返回有效值范围为(1-31)

8)通达信HOUR 小时 取得该周期的小时数. 用法: HOUR 函数返回有效值范围为(0-23),对于日线及更长的分析周期值为0

大智慧、HOUR取得该周期的小时数。用法:函数返回有效值范围为(0-23),对于日线及更长的分析周期值为0

9)通达信MINUTE 分钟 取得该周期的分钟数,用法: MINUTE 函数返回有效值范围为(0-59),对于日线及更长的分析周期值为0

大智慧MINUTE用法:MINUTE函数返回有效值范围为(0-59),对于日线及更长的分析周期值为0

10)通达信FROMOPEN 分钟 求当前时刻距开盘有多长时间.用法: FROMOPEN FROMOPEN.返回当前时刻距开盘有多长时间,单位为分钟.例如:当前时刻为早上十点,则返回31.。、

周期以日为基本单位的,分时为0有效.

大智慧、没有(可以用介于的办法解决)

大智慧、TIMETOT0,时间转化为秒数。用法:TIMETOT0(X),得到时间X距离当日0点的秒数。。

大智慧、T0TOTIME(X),秒数转换为时间。用法:T0TOTIME(X),得到从0点开始X秒后的时间值。

大智慧、没有(注:大智慧不画线不写画线函数就行了,去掉最后的画线符号,在前面“:”加上“=”就行了。注这些符号必须是在英语输入状态下的符号才有效。)

2)通达信BACKSET 向前赋值 将当前位置到若干周期前的数据设为1.用法: BACKSET(X,N),若X非0,则将当前位置到N周期前的数值设为1;例如:BACKSET(CLOSE>OPEN,2)若收阳则将该周期及前一周期数值设为1,否则为0

大智慧、BACKSET(X,N), 向前赋值,若X非0,则将当前位置到N周期前的数值设为1。例如:BACKSET(CLOSE>OPEN,2)若收阳则将该周期及前一周期数值设为1,否则为03)通达信BARSCOUNT 有效数据周期数 求总的周期数. 用法: BARSCOUNT(X)第一个有效数据到当前的天数,例如:BARSCOUNT(CLOSE)对于日线数据取得上市以来总交易日数,对于分笔成交取得当日成交笔数,对于1分钟线取得当日交易分钟数

大智慧、ARSCOUNT(X)第一个有效数据到当前的天数,例如:BARSCOUNT(CLOSE)对于日线数据取得上市以来总交易日数,对于分笔成交取得当日成交笔数,对于1分钟线取得当日交易分钟数

4)通达信CURRBARSCOUNT 到最后交易日的周期数 求到最后交易日的周期数.用法: CURRBARSCOUNT 求到最后交易日的周期数

大智慧BARSTATUS数据位置状态。用法:BARSTATUS返回数据位置信息,1表示第一根K线,2表示最后一个数据,0表示中间位置。例如:BARSTATUS=2表示当天是该股票数据的最后一个周期。(注:其中BARSTATUS=2表示当天是该股票数据的最后一个周期与通达信的“CURRBARSCOUNT”功能相同)

大智慧、BARSCOUNT 用法:BARSCOUNT(X)第一个有效数据到当前的天数,例如:BARSCOUNT(CLOSE)对于日线数据取得上市以来总交易日数,对于分笔成交取得当日成交笔数,对于1分钟线取得当日交易分钟数

6)通达信ISLASTBAR 是否为最后一个周期 判断是否为最后一个周期.用法: ISLASTBAR 判断是否为最后一个周期

大智慧、没有(注大智慧中直接将该函数去掉就可以了)

8)通达信BARSSINCE 第一个条件成立位置 第一个条件成立到当前的周期数. 用法: BARSSINCE(X):第一次X不为0到现在的天数例如:BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数

9)通达信BARSSINCEN N周期内首个条件成立位置 ,N周期内第一个条件成立到当前的周期数.用法: BARSSINCEN(X,N):N周期内第一次X不为0到现在的天数,例如:BARSSINCEN(HIGH>10,10)表示10个周期内股价超过10元时到当前的周期数

大智慧、COUNT 统计满足条件的周期数。用法:COUNT(X,N),统计N周期中满足X条件的周期数,若N=0则从第一个有效值开始。

10)通达信BARSSINCE 首个条件成立位置 第一个条件成立到当前的周期数. 用法: BARSSINCE(X):第一次X不为0到现在的天数。例如:BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数

大智慧、BARSSINCE 第一个条件成立位置 第一个条件成立到当前的周期数。用法:BARSSINCE(X):第一次X不为0到现在的天数例如:BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数

11)通达信COUNT 统计满足条件的周期数. 用法: COUNT(X,N),统计N周期中满足X条件的周期数,若N=0则从第一个有效值开始,例如:COUNT(CLOSE>OPEN,20)表示统计20周期内收阳的周期数

大智慧、COUNT 统计总数 统计满足条件的周期数。用法:COUNT(X,N),统计N周期中满足X条件的周期数,若N=0则从第一个有效值开始。例如:COUNT(CLOSE>OPEN,20)表示统计20周期内收阳的周期数

大智慧、LAST(X),统计连续满足X条件的周期数,用法:LAST(X),统计连续满足X条件的周期数。例如:LAST(CLOSE>OPEN)表示到目前为止连续收阳的周期数。

大智慧、HHV求最高值。用法:HHV(X,N),求N周期内X最高值,N=0则从第一个有效值开始。例如:HHV(HIGH,30)表示求30日最高价

15)通达信HHVBARS 上一高点位置 求上一高点到当前的周期数. 用法: HHVBARS(X,N):求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计 例如:HHVBARS(HIGH,0)求得历史新高到到当前的周期数

大智慧、HHVBARS(X,N): 求上一高点到当前的周期数.用法:HHVBARS(X,N):求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计例如:HHVBARS(HIGH,0)求得历史新高到到当前的周期数

16)通达信HOD 高值名次 求高值名次. 用法: HOD(X,N):求当前X数据是N周期内的第几个高值,N=0则从第一个有效值开始;

17)通达信LLV 最低值 求最低值. 用法: LLV(X,N),求N周期内X最低值,N=0则从第一个有效值开始; 例如:LLV(LOW,0)表示求历史最低价

大智慧、LLV 求最低值。用法:LLV(X,N),求N周期内X最低值,N=0则从第一个有效值开始。例如:LLV(LOW,0)表示求历史最低价

18)通达信LLVBARS 上一低点位置 求上一低点到当前的周期数. 用法: LLVBARS(X,N):求N周期内X最低值到当前周期数,N=0表示从第一个有效值开始统计 例如:LLVBARS(HIGH,20)求得20日最低点到当前的周期数

大智慧、LLVBARS(X,N): 求上一低点到当前的周期数用法:LLVBARS(X,N):求N周期内X最低值到当前周期数,N=0表示从第一个有效值开始统计,例如:LLVBARS(HIGH,20)求得20日最低点到当前的周期数

19)通达信LOD 低值名次 求低值名次. 用法: LOD(X,N):求当前X数据是N周期内的第几个低值,N=0则从第一个有效值开始;

21)通达信REF 日前的 引用若干周期前的数据.用法: REF(X,A),引用A周期前的X值.。 例如:REF(CLOSE,1)表示上一周期的收盘价,在日线上就是昨收

大智慧、REF 引用若干周期前的数据。用法:REF(X,A),引用A周期前的X值。例如:REF(CLOSE,1)表示上一周期的收盘价,在日线上就是昨收

22)通达信REFV 日前的 引用若干周期前的数据(未作平滑处理). 用法: REFV(X,A),引用A周期前的X值.、A可以是变量.。平滑处理:当引用不到数据时进行的操作。 例如:REFV(CLOSE,BARSCOUNT(C)-1)表示第二根K线的收盘价。

23)通达信REFX 日后的 引用若干周期后的数据(未作平滑处理). 用法: REFX(X,A),引用A周期后的X值. A可以是变量。平滑处理:当引用不到数据时进行的操作。例如:REFX(CLOSE,1)表示下一周期的收盘价,在日线上就是明天收盘价

24)通达信REFXV 日后的 引用若干周期后的数据(平滑处理).用法: REFXV(X,A),引用A周期后的X值A可以是变量。平滑处理:当引用不到数据时进行的操作。此函数中,平滑时使用上一个周期的引用值。 例如:TT:=IF(C>O,1,2); REFXV(CLOSE,TT);表示阳线引用下一周期的收盘价,阴线引用日后第二周期的收盘价。

26)通达信SUM 累和 求总和. 用法: SUM(X,N),统计N周期中X的总和,N=0则从第一个有效值开始。例如:SUM(VOL,0)表示统计从上市第一天以来的成交量总和

27)通达信FILTER 过滤 过滤连续出现的信号. 用法:FILTER(X,N):X满足条件后,删除其后N周期内的数据置为0。 例如:FILTER(CLOSE>OPEN,5)查找阳线,5天内再次出现的阳线不被记录在内

大智慧、FILTER 过滤连续出现的信号。用法:FILTER(X,N):X满足条件后,将其后N周期内的数据置为0,若N为0表示将其后的所有数据置0,例如:FILTER(CLOSE>OPEN,5)查找阳线,5天内再次出现的阳线不被记录在内(注:两者虽然代码相同,但用途不同,通达信主要用于点线变色,而大智慧主要用于去掉连续的输出信号)

28)通达信FILTERX 反向过滤 反向过滤连续出现的信号. 用法:FILTERX(X,N):X满足条件后,将其前N周期内的数据置为0.。

例如:FILTERX(CLOSE>OPEN,5)查找阳线,前5天内出现过的阳线不被记录在内

29)通达信TFILTER 交易信号过滤 过滤连续出现的交易信号. 用法:TFILTER(开仓,平仓,N);过滤掉开仓(平仓)信号发出后、

下一个平仓(开仓)信号发出前的所有开仓(平仓)信号。N=1表示仅对开仓信号过滤;N=2表示仅对平仓信号过滤;N=0表示对开仓、平仓信号都过滤;例如:ENTERLONG:TFILTER(开仓,平仓,1);EXITLONG:TFILTER(开仓,平仓,2);

大智慧、FILTER。过滤连续出现的信号。用法:FILTER(X,N):X满足条件后,将其后N周期内的数据置为0,若N为0表示将其后的所有数据置0,例如:FILTER(CLOSE>OPEN,5)查找阳线,5天内再次出现的阳线不被记录在内

30)通达信TTFILTER 交易信号过滤 过滤多空交易信号.

用法:TTFILTER(多头买入开仓,多头卖出平仓,空头卖出开仓,空头买入平仓,N);

1.过滤掉多(空)开仓信号发出后、下一个多(空)平仓信号发出前的所有多(空)开仓信号.

2.多(空)开仓信号发出且空(多)仓已建时,要发出一个平空(多)仓的信号.

3.过滤掉多(空)平仓信号发出后、下一个多(空)开仓信号发出前的所有多(空)平仓信号

N=1表示仅对多头开仓信号过滤;。

N=2表示仅对多头平仓信号过滤;。

N=3表示仅对空头开仓信号过滤;。

N=4表示仅对空头平仓信号过滤;。

N=0表示对合并多空开仓、平仓信号;。

例如:ENTERLONG:TTFILTER(多头买入开仓,多头卖出平仓,空头卖出开仓,空头买入平仓,1);

31)通达信TR 真实波幅 求真实波幅. 用法: TR,求真实波幅.例如:ATR:=MA(TR,10);表示求真实波幅的10周期均值

32)通达信SUMBARS 累加到指定值的周期数 向前累加到指定值到现在的周期数. 用法: SUMBARS(X,A):将X向前累加直到大于等于A,返回这个区间的周期数 例如:SUMBARS(VOL,CAPITAL)求完全换手到现在的周期数

大智慧、SUMBARS ,前累加到指定值到现在的周期数。用法:SUMBARS(X,A):将X向前累加直到大于等于A,返回这个区间的周期数。例如:SUMBARS(VOL,CAPITAL)求完全换手到现在的周期数

34)通达信TMA返回移动平均.

35)通达信MA 简单移动平均 返回简单移动平均. 用法:MA(X,M):X的M日简单移动平均

36)通达信EMA 指数移动平均 返回指数移动平均. 用法:EMA(X,M):X的M日指数移动平均

大智慧、EMA 求指数平滑移动平均。用法:EMA(X,N),求X的N日指数平滑移动平均。算法:若Y=EMA(X,N)

37)通达信 MEMA平滑移动平均 返回平滑移动平均.

38)通达信EXPMA 指数移动平均 返回指数移动平均. 用法:EXPMA(X,M):X的M日指数移动平均

大智慧、EMA(用EMA代替)

39)通达信EXPMEMA 指数平滑移动平均 返回指数平滑移动平均. 用法:EXPMEMA(X,M):X的M日指数平滑移动平均

40)通达信XMA 偏移移动平均 返回偏移移动平均. 用法:XMA(X,M):X的M日偏移移动平均

大智慧、BETWEEN,介于两个数之间。用法:BETWEEN(A,B,C)表示A处于B和C之间时返回1,否则返回0

43)通达信 TOPRANGE 当前值是近多少周期内的最大值. 用法: TOPRANGE(X):X是近多少周期内X的最大值,例如:TOPRANGE(HIGH)表示当前最高价是近多少周期内的最高价

44)通达信LOWRANGE 当前值是近多少周期内的最小值.

例如:LOWRANGE(LOW)表示当前最高价是近多少周期内的最小价

45)通达信FINDHIGH 寻找指定周期内的特定最大值 N周期前的M周期内的第T个最大值.

46)通达信FINDHIGHBARS 寻找指定周期内的特定最大值 N周期前的M周期内的第T个最大值到当前周期的周期数.

47)通达信FINDLOW 寻找指定周期内的特定最小值 N周期前的M周期内的第T个最小值.

48)通达信FINDLOWBARS 寻找指定周期内的特定最小值 N周期前的M周期内的第T个最小值到当前周期的周期数.

2)通达信LONGCROSS 持续周期后上穿 两条线维持一定周期后交叉. 用法:LONGCROSS(A,B,N)表示A在N周期内都小于B,本周期从下方向上穿过B时返回1,否则返回0

大智慧、LAST(X),统计连续满足X条件的周期数。

4)通达信DOWNNDAY 连跌 返回是否连跌周期.

大智慧、ALL是否一直满足条件。用法:ALL(X,N),统计N周期中是否一直都满足X条件,若N=0则从第一个有效值开始。

9)通达信TESTSKIP 是否就此返回 TESTSKIP(A):不满足A则直接返回. 用法: TESTSKIP(A) 表示如果不满足条件A则改公式直接返回,不再计算接下来的表达式

大智慧、NOT。求逻辑非。用法:NOT(X)返回非X,即当X=0时返回1,否则返回0,例如:NOT(ISUP)表示平盘或收阴

69)通达信IF 逻辑判断 根据条件求不同的值. 用法: IF(X,A,B)若X不为0则返回A,否则返回B;

大智慧、IF 根据条件取得不同的值。用法:IF(X,A,B)若X不为0则返回A,否则返回B。例如:IF(CLOSE>OPEN,HIGH,LOW)表示该周期收阳则返回最高值,否则返回最低值

70)通达信IFF 逻辑判断 根据条件求不同的值用法: IFF(X,A,B)若X不为0则返回A,否则返回B. 例如:IFF(CLOSE>OPEN,HIGH,LOW)表示该周期收阳则返回最高值,否则返回最低值

72)通达信MAX 较大值 求最大值.用法: MAX(A,B)返回A和B中的较大值. 例如:MAX(CLOSE-OPEN,0)表示若收盘价大于开盘价返回它们的差值,否则返回0

大智慧、MAX,求最大值。用法:MAX(A,B...)返回所有参数的中的最大值,参数数量可以有2—16个。例如:MAX(CLOSE,OPEN,REF(CLOSE,1))表示返回昨收、今开、收盘三个价格中最高的价格。

73)通达信MIN 较小值 求最小值. 例如:MIN(CLOSE,OPEN)返回开盘价和收盘价中的较小值

大智慧、MIN,求最小值。用法:MIN(A,B...)返回所有参数的中的最小值,参数数量可以有2—16个

大智慧、ACOS 反余弦 反余弦值.用法: ACOS(X)返回X的反余弦值.

2)通达信ASIN 反正弦 反正弦值.用法: ASIN(X)返回X的反正弦值.

大智慧、ASIN 反正弦 反正弦值.用法: ASIN(X)返回X的反正弦值.

3)通达信ATAN 反正切 反正切值.用法: ATAN(X)返回X的反正切值.

大智慧、ATAN 反正切 反正切值.用法: ATAN(X)返回X的反正切值

大智慧、COS 余弦 余弦值.用法: COS(X)返回X的余弦值.

大智慧、SIN 正弦 正弦值.用法: SIN(X)返回X的正弦值.

大智慧、TAN 正切 正切值.用法: TAN(X)返回X的正切值

8)通达信LN 自然对数 求自然对数.用法: LN(X)以e为底的对数. 例如:LN(CLOSE)求收盘价的对数

大智慧、LN求自然对数。用法:LN(X)以e为底的对数,例如:LN(CLOSE)求收盘价的对数

大智慧、LOG求10为底的对数。用法:LOG(X)取得X的对数,例如:LOG(100)等于2

大智慧、INTPART 绝对值减小取整,即取得数据的整数部分。用法:INTPART(A)返回沿A绝对值减小方向最接近的整数

大智慧、BETWEEN 介于两个数之间。用法:BETWEEN(A,B,C)表示A处于B和C之间时返回1,否则返回0

18)通达信ROUND四舍五入.用法:ROUND(X),返回X四舍五入到个位的数值.

大智慧、MOD求模运算。用法:MOD(A,B)返回A对B求模

大智慧、FORCAST线性回归预测值。用法:FORCAST(X,N)为X的N周期线性回归预测值

大智慧、SLOPE线性回归斜率。用法:SLOPE(X,N)为X的N周期线性回归线的斜率

大智慧、STD估算标准差。用法:STD(X,N)为X的N日估算标准差

大智慧、STDP总体标准差。用法:STDP(X,N)为X的N日总体标准差

7)通达信VAR 估算样本方差 VAR(X,N) 返回估算样本方差.

大智慧、VAR估算样本方差。用法:VAR(X,N)为X的N日估算样本方差。

大智慧、VARP总体样本方差。用法:VARP(X,N)为X的N日总体样本方差

大智慧、COVAR两样本的协方差。用法:COVAR(X,Y,N)为X与Y的N周期协方差

大智慧、RELATE两样本的相关系数。用法:RELATE(X,Y,N)为X与Y的N周期相关系数,其有效值范围在-1 — 1之间

11)通达信BETA (Beta)系数,BETA(N) 返回当前证券N周期收益与大盘收益相比的贝塔系数.

大智慧、BETA贝塔系数。用法:BETA(N)为当前股票收益与大盘收益相比的贝塔系数,该系数表明大盘每变动1%,则该股票将变动N%

大智慧、BETA2(X,Y,N)为X与Y的N周期相关放大系数,表示Y变化1%,则X将变化N%

按照板块统计上证所TOPVIEW数据。用法:TOPVIEWBLOCK(N,S,M,P),对板块S的成份股进行统计,取得M期之前的第N号TOPVIEW数据,N取值请参考上表,M可以省略表示0,P的个位表示数据处理方式,0表示当日没有TOP数据就使用前一天的数据,1表示截止日之后数据为0,2表示非数据当日数值为0;P的十位表示统计方法,0表示平均,10表示总和,20表示流通盘加权平均,30表示总股本加权平均,40表示最大值,50表示最小值。P可以省略表示为0.

用法:HORCALC(板块名称,数据项,计算方式,权重)

计算方式:0-累加,1-排名次

权重:0-总股本,1-流通股本,2-等同权重,3-流通市值

3)通达信INSORT. 板块排序选股. 用法:INSORT(板块名称,指标名称,指标线,升降序),返回该股在板块中的排序序号,

产板块中的排名,最后一个参数为0表示降序排名

4)通达信INSUM.板块指标统计. 用法:INSUM(板块名称,指标名称,指标线,计算类型),返回板块各成分该指标相应输

出安计算类型得到的计算值. 大智慧、计算类型:0-累加,1-平均数,2-最大值,3-最小值。

例如:INSUM('房地产','KDJ',3,0)表示房地产板块中所有股票的KDJ指标第三个输

1)通达信COST 成本分布 成本分布情况. 用法:COST(10),表示10%获利盘的价格是多少,即有10%的持仓量在该价格以下,其余

90%在该价格以上,为套牢盘,该函数仅对日线分析周期有效

大智慧、COST成本分布情况(矩形分布)。用法:COST(10),表示10%获利盘的价格是多少,即有10%的持仓量在该价格以下,其余90%在该价格以上,为套牢盘。该函数仅对日线分析周期有效

大智慧、PEAK 前M个ZIG转向波峰值。用法:PEAK(K,N,M,ABS)表示之字转向ZIG(K,N,ABS)的前M个波峰的数值,M必须大于等于1。若ABS为0或省略,则表示相对ZIG转向,否则为绝对ZIG转向。

例如:PEAK(1,5,1)表示%5最高价ZIG转向的上一个波峰的数值

3)通达信PEAKBARS 波峰位置 前M个ZIG转向波峰到当前距离. 用法:PEAKBARS(K,N,M)表示之字转向ZIG(K,N)的前M个波峰到当前的周期数,M必须大于等于1例如:PEAK(0,5,1)表示%5开盘价ZIG转向的上一个波峰到当前的周期数

大智慧、PEAKBARS前M个ZIG转向波峰到当前距离。用法:PEAKBARS(K,N,M,ABS)表示之字转向ZIG(K,N,ABS)的前M个波峰到当前的周期数,M必须大于等于1。若ABS为0或省略,则表示相对ZIG转向,否则为绝对ZIG转向。

例如:PEAK(0,5,1)表示%5开盘价ZIG转向的上一个波峰到当前的周期数

大智慧、 抛物转向。用法:SAR(N,S,M),N为计算周期,S为步长,M为极值

例如SAR(10,2,20)表示计算10日抛物转向,步长为2%,极限值为20%

5)通达信SARTURN 抛物转向点 抛物转向点.用法:SARTURN(N,S,M),N为计算周期,S为步长,M为极值,若发生向上转向则返回1,若发生向下转向则返回-1,否则为0,其用法与SAR函数相同

大智慧、SARTURN抛物转向点。用法:SARTURN(N,S,M),N为计算周期,S为步长,M为极值,若发生向上转向则返回1,若发生向下转向则返回-1,否则为0

大智慧、TROUGH 前M个ZIG转向波谷值。用法:TROUGH(K,N,M,ABS)表示之字转向ZIG(K,N,ABS)的前M个波谷的数值,M必须大于等于1。若ABS为0或省略,则表示相对ZIG转向,否则为绝对ZIG转向。

7)通达信TROUGHBARS 波谷位置 前M个ZIG转向波谷到当前距离.

大智慧、TROUGHBARS 前M个ZIG转向波谷到当前距离。用法:TROUGHBARS(K,N,M,ABS)表示之字转向ZIG(K,N,ABS)的前M个波谷到当前的周期数,M必须大于等于1。若ABS为0或省略,则表示相对ZIG转向,否则为绝对ZIG转向。

例如:TROUGH(2,5,2)表示%5最低价ZIG转向的前2个波谷到当前的周期数

8)通达信WINNER 获利盘比例 获利盘比例.用法:WINNER(CLOSE),表示以当前收市价卖出的获利盘比例,例如返回0. 1表示10%获利盘;WINNER(10. 5)表示10.5元价格的获利盘比例,该函数仅对日线分析周期有效

大智慧、WINNER 近期获利盘比例(矩形分布)。用法:LWINNER(5,CLOSE),表示最近5天的那部分成本以当前收市价卖出的获利盘比例,例如返回0.1表示10%获利盘,该函数仅对日线分析周期有效

9)通达信LWINNER 近期获利盘比例 LWINNER用法:LWINNER(5,CLOSE),表示最近5天的那部分成本以当前收市价卖出的获利盘比例例如返回0. 1表示10%获利盘

LWINNER近期获利盘比例(矩形分布)。用法:LWINNER(5,CLOSE),表示最近5天的那部分成本以当前收市价卖出的获利盘比例,例如返回0.1表示10%获利盘,该函数仅对日线分析周期有效

10)通达信PWINNER 远期获利盘比例 远期获利盘比例.用法:PWINNER(5,CLOSE),表示5天前的那部分成本以当前收市价卖出的获利盘比例例如返回0.

大智慧、远期获利盘比例(矩形分布)。用法:PWINNER(5,CLOSE),表示5天前的那部分成本以当前收市价卖出的获利盘比例,例如返回0.1表示10%获利盘,该函数仅对日线分析周期有效

示区间成本为20元该函数仅对日线分析周期有效

12)通达信PPART 远期成本分布比例 远期成本分布比例. 用法:PPART(10),表示10前的成本占总成本的比例,0. 2表示20%

大智慧PPART(10), 远期成本分布比例.表示10天前的成本占总成本的比例,0.2表示20%

13)通达信ZIG 之字转向 之字转向. 用法:ZIG(K,N),当价格变化量超过N%时转向,K表示0:开盘价,1:最高价,2:最低价,3:收

盘价,其余:数组信息,例如:ZIG(3,5)表示收盘价的5%的ZIG转向

大智慧、ZIG 之字转向。用法:ZIG(K,N,ABS),当价格变化量超过N%时转向,K表示0:开盘价,1:最高价,2:最低价,3:收盘价,4:低点采用最低价、高点采用最高价。若ABS为0或省略,则表示相对ZIG转向,否则为绝对ZIG转向。例如:ZIG(3,5)表示收盘价的5%的ZIG转向;ZIG(3,0.5,1)表示收盘价的0.5元绝对ZIG转向

例如NewSAR(10,2)表示从10日后开始统计,加速因子为2的抛物转向

15)通达信LFS 返回个股锁定因子.

1)通达信INDEXA 大盘成交额 大盘成交额 ,INDEXA 返回大盘成交额.

大智慧、INDEXA对应大盘成交额。用法:INDEXA,表示同期大盘的成交额,该函数对分笔成交分析周期无效

大智慧、INDEXADV对应大盘上涨家数。用法:INDEXADV,表示同期大盘的上涨家数。该函数对分笔成交分析周期无效

大智慧、INDEXDEC对应大盘下跌家数。用法:INDEXDEC,表示同期大盘的下跌家数。该函数对分笔成交分析周期无效

4)通达信INDEXC 大盘收盘价 大盘收盘价,INDEXC 返回大盘收盘价.

大智慧、INDEXC对应大盘收盘价。用法:INDEXC,表示同期大盘的收盘价,该函数对分笔成交分析周期无效

5)通达信INDEXH 大盘最高价 大盘最高价 ,INDEXH 返回大盘最高价.

大智慧、INDEXH 对应大盘最高价。用法:INDEXH,表示同期大盘的最高价,该函数对分笔成交分析周期无效

6)通达信INDEXL 大盘最低价 大盘最低价, INDEXL 返回大盘最低价.

大智慧、INDEXL对应大盘最低价。用法:INDEXL,表示同期大盘的最低价。该函数对分笔成交分析周期无效

7)通达信INDEXO 大盘开盘价 大盘开盘价,INDEXO 返回大盘开盘价.

大智慧、INDEXO对应大盘开盘价。用法:INDEXO,表示同期大盘的开盘价。该函数对分笔成交分析周期无效

8)通达信INDEXV 大盘成交量 大盘成交量,INDEXV 返回大盘成交量.

大智慧、INDEXV 对应大盘成交量。用法:INDEXV,表示同期大盘的成交量、该函数对分笔成交分析周期无效

通达信TRADENUM总成交笔数,逐笔成交总笔数,Level2收费行情的个股行情专用.

大智慧 ZBS 取得该周期总笔数。用法:ZBS

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

通达信TICKINCOUNT主动买采样数,分时采样买笔数,Level2收费行情专用.

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

通达信TICKOUTCOUNT主动卖采样数,分时采样卖笔数,Level2收费行情专用.

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示) 21)通达信AVGBIDPX,Level1行情表示:最低价;Level2行情表示:最新委买均价.

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

大智慧、没有(注:根据整个语句含义,到大智慧函数表中搜索“笔数”或“成交量”,找到一个或几个合适的函数组成短句表示)

我要回帖

更多关于 跨境电商怎么做 的文章

 

随机推荐