括号

PHP算法之删除最外层的括号

给你一囗甜甜゛ 提交于 2019-12-06 09:53:54
有效括号字符串为空 ("")、"(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 "(()(()))" 都是有效的括号字符串。 如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。 给出一个非空有效字符串 S,考虑将其进行原语化分解,使得:S = P_1 + P_2 + ... + P_k,其中 P_i 是有效括号字符串原语。 对 S 进行原语化分解,删除分解中每个原语字符串的最外层括号,返回 S 。 示例 1: 输入:"(()())(())" 输出:"()()()" 解释: 输入字符串为 "(()())(())",原语化分解得到 "(()())" + "(())", 删除每个部分中的最外层括号后得到 "()()" + "()" = "()()()"。 示例 2: 输入:"(()())(())(()(()))" 输出:"()()()()(())" 解释: 输入字符串为 "(()())(())(()(()))",原语化分解得到 "(()())" + "(())" + "(()(()))", 删除每隔部分中的最外层括号后得到 "()()" + "()" + "()(())" = "()()()

js中(function(){…})()立即执行函数写法理解(经过控制台测试后修改)

依然范特西╮ 提交于 2019-12-06 08:28:37
( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因并非如此。要理解立即执行函数,需要先理解一些函数的基本概念。 函数声明、函数表达式、匿名函数 函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明。 函数表达式 var fnName = function () {…};使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式,这是最常见的函数表达式语法形式。 匿名函数:function () {}; 使用function关键字声明一个函数,但未给函数命名,所以叫匿名函数,匿名函数属于函数表达式,匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序或创建闭包等等。 函数声明和函数表达式不同之处在于,一、Javascript引擎在解析javascript代码时会‘函数声明提升’(Function declaration Hoisting)当前执行环境(作用域)上的函数声明,而函数表达式必须等到Javascirtp引擎执行到它所在行时

day 55 ajax

♀尐吖头ヾ 提交于 2019-12-06 02:51:23
only与defer only括号内放字段 查询结果是一个列表套一个个的数据对象 这些数据 对象点括号内的字段属性不会再查询数据库 直接就是对象获取属性 也支持点击 括号内没有的字段 但是每点击一次就会 重新走一次数据库 查询 效率极低 defer与only是互为反操作 defer 括号内放什么字段 查询出来的对象就没有该字段属性 如果你要点击 每点击一次就要重新走一次数据 而你如果 点击了非括号内的字段 就 不会走数据库 仅仅是对象属性的操作 select_related与prefetch_related select_related与prefetch_related select_related括号内只能 放外键字段 并且外键字段的类型只能是 一对多 或者 一对一 不能是多对多 内部是自动连表操作 会将括号内外键字段所关联的表 与当前表 自动拼接成一张表 然后将表中的数据一个个查询出来封装成一个个的对象 这样做的好处就在于跨表也不需要重复的走数据库了 减轻数据库的压力 select_related括号内可以 放多个外键字段 都号隔开 会将多个外键字段关联的表与当前表 全部拼成一张大表 耗时:数据库层面需要先连表 prefetch_related 内部是子查询 会自动帮你 按步骤查询多张表 然后 将查询的结果封装到对象中 给用户的感觉好像还是连表操作 括号内支持传多个外键字段

关于指向指针的指针的联想

被刻印的时光 ゝ 提交于 2019-12-05 15:18:01
int *p; 分析一下几种看法; 1.(int *)p;这种的话可以把括号理解为一种变量的定义,定义了一个变量,它存储了一个整型变量的地址。 2.int (*p);定义一个指针,这个指针指向的是整型变量。 再来看看这个: int **p; 1.(int *)(*p); 这个东西,你结合上面的东西来说的话,岂不是,括号讲的是变量的定义,定义一个变量,它是一个指向 整型变量的指针。右边括号,定义了一个指针,它指向的是 指向一个整型变量的指针。所以说这整个玩意儿, 讲的是,一个指针p,它储存了另一个指针的地址,它储存的这个指针是一个指向整型变量的指针。 2.(int **)p; 这第二种分的,把p当变量,左边的括号是变量定义。那么这个定义是啥意思呢? 好像可以这样理解: *这个东西运算级别高,从右往左结合,然后*和*的级别相同,他俩之间就从左往右了,于是左边这个星号先和 int一结合,诶,就是说定义一个指向整型(整型处在第一个星号的左边是不,那就指向它)的指针,这还没完, 第二个星号出来了,左边结合完了,这时候它的左边是啥:(int *),所以第二个*指向的就是它,于是乎,变成了: p这个变量呢,它是 指向 一个指向整型变量的指针的指针变量。 3.int (**p); 这第三种怎么讲呢,其实也和第二种相似。这和p离得近的*说,你这个p,是一个指针变量,指谁我不知道,爱咋咋地, 好了

shell运算、双括号、双中括号

冷暖自知 提交于 2019-12-05 12:11:42
在bash中计算i=i+1有三种办法: 1.i=$(($i+1)) 2.i=`expr $i + 1` 3.let “i=i+1″ 其中第一种和第二种是可以在sh里面使用的,第三种只能在bash里使用,还是第一种最简单,通用。 双括号还有妙用 for ((i=1;i<=num;i++)) shell里面是不允许if [ $a != 1 || $b = 2 ]出现的,要用 if [ $a != 1 ] || [ $b = 2 ]] 用双括号可以解决 if [[ $a != 1 || $b = 2 ]] if [ "$a" -lt "$b" ]也可以改成双括号的形式 ((“$a” < “$b”)) 在刚刚学习写shell 批处理时候,进行逻辑运算中,少不了需要进行基础的:四则运算,这里说说在linux shell 里面简单的实现方法。 1.简单方法 [chengmo@centos5 ~]$ b=$((5*5+5-3/2)) [chengmo@centos5 ~]$ echo $b 29 在linux shell中,我们可以使用 $(()) 将表达式放在括号中,即可达到运算的功能。 2.其它方法: 用:expr 实现运算 [chengmo@centos5 ~]$ expr 5 - 4 1 注意:将需要运算的表达式写入在expr 后面即可,保证 参数与运算符号中间有空格隔开。 类别 语法

CSP - S 2019 简要题解

蹲街弑〆低调 提交于 2019-12-05 07:33:45
考完了还是来写一下题解。 Day1 T1 - 格雷码 确定最高位并按题意递归到子问题即可。注意开 unsigned long long 。 T2 - 括号树 显然的是我们只需要求从当前节点往根走的最短的合法括号序列即可。当前字符如果是 ) ,则路径一定不合法,反之,设 \(f[x]\) 表示根到当前的路径的左括号个数减右括号个数,当前节点到最后一个出现的 \(f[x]\) 一定是最短的合法括号序列。开桶记录,并且在dfs结束时进行撤销即可。 T3 - 树上的数 因为求的是字典序,我们考虑依次确定最小能填多少。考虑最终 \(x\) 从 \(a\) 走到了 \(b\) ,对于整个结果的影响其实是对于路径上的每个节点,与之相邻的边的先后操作顺序加入了一个限制。限制形如:一条边必须紧接在另一条边之后操作,或一条边应该在最先/最后操作。 用并查集维护当前的位置,依次 dfs,暴力判断一个节点是否能行即可。当然并查集可以换成直接维护每段确定的顺序的最先/最后一条边,不过并不会得到更好的复杂度(都是 \(O(n^2)\) )。 Day2 T1 - Emiya家今天的饭 考虑最多有一个位置不满足 \(\lfloor n/2\rfloor\) 的条件,并且转化一下其实是这个位置选的要比其它的和还要多。 枚举是哪一个位置,记录一下选的个数的差做dp。 T2 - 划分 证明不会。 感性理解/打表

设计-Int(4)和Int(11)谁更美

岁酱吖の 提交于 2019-12-05 06:55:59
设计-Int(4)和Int(11)谁更美 【缘起】 大家平时在进行数据库设计的时候,如果遇到需要存储整数类型的数据的时候,通常会优先使用Int这个整数类型,在处理20亿级别的正负数值存储上,Int类型是完全能够满足日常需求的了。 但是在进行数据库建表语句书写的时候,大家经常会见到Int类型的后面会带上1个括号,里面跟上1个数值,通常要么是4,要么是11。如下: 这Int括号里面的数值,究竟是什么意思呢?有的开发者认为,这个数值是用来限制Int类型能够存储的数字的长度的( 类似char、varchar括号数值 );有的开发者则认为,在存储相同数字的情况下,Int(4)会比Int(11)在存储上节省更多的存储空间。 那么实际情况究竟是怎样的呢?在实际的数据库设计中,究竟应该使用Int(4)还是Int(11)呢?又或者是应该什么都不写呢,只用默认的Int呢? 让我们开启今天的MySQL数据库之Int类型之旅。^_^ 【存储比较】 为了方便测试Int(4)、Int(11)、以及默认的Int,在存储上是否存在差别,我们分别创建t_int_four、t_int_eleven、t_int_default表,如下: 接下来,我们向t_int_four表的my_int_four字段,插入Int( 有符号 )类型的最大值2147483647,如下: 如上图,我们看到m_int_four字段的Int(4

Python学习之函数(多层函数)、re模块的正则匹配--计算复杂加减乘除

…衆ロ難τιáo~ 提交于 2019-12-05 03:13:59
头疼,其实这个程序在我看的视频当中是当做re模块的运用来进行测试的,而到了我这里就成了简化版的了,因为我实在是做吐了,恕小弟无能,只能做简化版的。为何说是简化版呢,因为要求是给的计算式是多层嵌套的小括号“()”,然后计算的时候不能用eval方法,eval是个好东西啊,他能直接得到字符串中的结果,比如eval(“23+34*45/345-34”)=结果,是可以直接给你返回算术式的结果的,如果你自己处理这段字符串的话就要花好多工夫拆解字符串。我的简化版是将多层小括号给分为了小括号“()”、中括号“【】”、大括号“{}”,不允许使用多层相同括号连续嵌套(相应的不允许超过三层,超过三层,小弟无能为力),而我觉得,想要区分不同的层级的小括号“(()())”是需要下功夫用re正则去匹配的,而我这个用是用到正则了,但用的很少,重点全在如何自己写代码实现eval的功能了。 效果图: 另附一张各步骤计算详解 源代码: import redef Get_FuH(As): As = As.replace('--','+') As = As.replace('+-', '+') As = As.replace('/-', '/') As = As.replace('*-', '*') End = [] As = list(As) if (As[1] == '-'): As.pop(1) for i in

CSP-S 2019 羊城两日游记

≡放荡痞女 提交于 2019-12-05 00:08:48
Friday 一改往常只会看窗外的习惯,我和ymq玩了几局斗地主,赢到了巨多豆子(某种好的征兆?)。 下榻后迫不及待地去华莱士买吃的,碰见一个粗话连篇的人,丑王安全感骤降,广州市井气息还是很浓重的啊。 睡前几首轻音,很快入睡了。 Saturday 依旧是自助早餐,依旧是奶香四溢的热牛奶,吃的很饱,希望都能转成rp吧。 出发。 加油,奥利给!!!! 考场的键盘从没让人不失望过。兴奋打开cmd,输入g++,结果根本没有g++?还好考前模拟赛适应了下vim写代码贴dev测试,要在考场上改习惯,真的适应不了。 “比赛开始。” 开干! 我直接打开pdf看题。 水题T1很顺利地写完了,这一次细心看题,没有被 unsigned long long 卡掉,算是比较顺利的了。 人均切T2,可是我并不会,于是跳到T3写了10分暴力,再回来看T2。 这是我一开始的思路: 设 \(f_i\) 表示 \(i\) 的答案, \(l_i\) 表示根到 \(i\) 的路径上,以 \(i\) 为右端点,满足是一个合法括号序的左端点的个数。对于每个右括号节点 \(x\) ,找到与之匹配的左括号节点 \(y\) ,转移 \(l[x]=l[fa[y]]+1\) , \(f\) 只需要把路径上的 \(l\) 加起来即可。 可是怎么找与之匹配的左括号?我最初的想法是用栈,限于智商,并没有写出来。 50分?不甘心啊!

shell脚本中的双括号用法

僤鯓⒐⒋嵵緔 提交于 2019-12-04 23:24:13
在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算。估计很多朋友都感觉比较难以接受。特变逻辑运算符”[]”使用时候,必须保证运算符与算数 之间有空格。 四则运算也只能借助:let,expr等命令完成。 今天讲的双括号”(())”结构语句,就是对shell中算数及赋值运算的扩展。 使用方法: 语法: ((表达式1,表达式2…)) 特点: 1、在双括号结构中,所有表达式可以 像c语言一样 ,如:a++,b--等。 2、在双括号结构中,所有变量可以不加入:“$”符号前缀。 3、双括号可以进行逻辑运算,四则运算 4、双括号结构 扩展了for,while,if条件测试运算 5、支持多个表达式运算,各个表达式之间用“,”分开 使用实例: 扩展四则运算 1 2 3 4 5 6 7 8 9 10 11 #!/bin/sh a=1; b=2; c=3; ((a=a+1)); echo $a; a=$((a+1,b++,c++)); echo $a,$b,$c 运行结果: sh testsh.sh 2 3,3,4 双括号结构之间支持多个表达式,然后加减乘除等c语言常用运算符都支持。如果双括号带:$,将获得表达式值,赋值给左边变量。 扩展逻辑运算 1 2 3 4 5 6 7 8 9 10 #!/bin/sh a=1; b= "ab" ; echo $((a>1?8:9)); (