数组公式

js基础知识点

匿名 (未验证) 提交于 2019-12-02 23:34:01
1. 变量声明: var 变量名; J avaScript基础数据类型 包括原始类型和引用类型 原始类型有5个: Number(数值) String(字符串) Boolean(布尔) Null(空) Undefined(未定义) 引用类型有1个: Object(对象) 通过typeof(x)可以返回一个变量x的数据类型; 注意一点:typeof运算符对于null类型返回的是object 2.函数 1.函数:函数就是可以重复执行的代码块。 2.语法:function 函数(){} 3.调用:函数定义了,一定要调用 4.形参,实参,实参写在调用函数的括号里,实参写在定义函数括号里 5,返回值 return 返回值返回了要接收,接受的是调用函数。 6,Js不能重载(就是两个函数名相同,下面的函数会把上面的函数覆盖) 7.匿名函数 function(){} 没有函数名,一般要与变量或者事件结合起来使用 8.作用域:全局变量,局部变量。 局部变量只能在函数内部使用。代码执行完,定义的变量也就消失了。 全局变量可以在任何地方使用。 3.循环 ① while循环 while用于循环作用基本一致,通常用来循环数组 语法:while(条件){循环体} ②  do while循环,do while 是while的一个亲戚,它在循环开始前先执行一次操作,然后才进行判断,true就继续执行

noip2014+2018总结

杀马特。学长 韩版系。学妹 提交于 2019-12-02 23:22:36
2014 Day1 T1. 周期->数组下标循环 把所有情况的输赢情况在二维数组里记录下来,一开始没想到哇 T2. 存图差点忘了怎么存。。 但这道题还是没做出来诶 然后看了题解 1、联合的两个节点距离为二,所以必定有一个中转点。所以,我们可以枚举每一个中转点。 2、假设每个中转点周围有两个点,权值分别为a、b,则联合权值为2ab=(a+b)^2-(a^2+b^2)。 3、若有三个点,权值分别为a、b、c,则联合权值为2ab+2bc+2ac=(a+b+c)^2-(a^2+b^2+c^2)。 4、综上,以某个节点为中转点的联合权值之和等于权值和的平方减去权值的平方和。(+1!!!!!) 5、为了找到最大的联合权值,只需找到周围最大的两个权值max1,max2,相乘判断即可 注意:虽然题目让%10007,但最大联合权值是不能%10007的!!!(否则40分) T3.这个,,,还没做。。 Day2 T1. 一开始不知道是什么错误,不能读入。。然后并没有找到错。。 后来改了改边界,,过了。。 为了防止减出负数,直接从20开始存了 T2.寻找道路 原谅我还没有找到路。。 T3.还没做。。。 2018 Day1 T1.这道题。。之前做过哎 我记住了递推公式。。 T2.一开始是不会的 后来听别人讲的 将系统内部可以自己表示的大数删掉,剩余的个数,就是最小个数了 如果x能被前i个数组成且

算法(第四版)C#题解――2.3

匿名 (未验证) 提交于 2019-12-02 22:06:11
整个项目都托管在了 Github 上: https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 查找更为方便的版本见: https://alg4.ikesnowy.com/ 这一节内容可能会用到的库文件有 Quick,同样在 Github 上可以找到。 善用 Ctrl + F 查找题目。 2.3.1 按照 Partition() 方法的轨迹的格式给出该方法是如何切分数组 E A S Y Q U E S T I O N 的。 2.3.2 按照本节中快速排序所示轨迹的格式给出快速排序是如何将数组 E A S Y Q U E S T I O N 排序的(出于练习的目的,可以忽略开头打乱数组的部分)。 2.3.3 对于长度为 N 的数组,在 Quick.sort() 执行时,其最大元素最多会被交换多少次? N / 2 在快速排序中,一个元素要被交换,有以下两种情况 1.该元素是枢轴,在切分的最后一步被交换 2.该元素位于枢轴错误的一侧,需要被交换到另一侧去 注意,以上两种情况在一次切分中只会出现一次 首先来看第一种情况,如果一个元素变成了枢轴 那么在之后的切分中该元素会被排除,不存在后续的交换。 因此我们的目标应该是: 最大的元素总是出现在错误的一侧,同时切分的次数尽可能多。 接下来我们来思考如何构造这样的数组

偏序问题总结(各种套路)

半城伤御伤魂 提交于 2019-12-02 21:42:11
因为一个傻逼T1没有切,所以我感觉我很傻逼。 所以在这里总结一些你们早就得心应手的方法,供我自己参考??? 一维偏序: 树状数组 排序递推 二维偏序: 运用排序解决一维,然后退化为一维偏序问题 主席树 二维树状数组(内存容易爆炸) 三维偏序: CDQ分治:(本质上也就是排序降1维,类似归并/双指针的方法处理1维,树状数组处理最后1维偏序) 化简题目或公式,去掉无用的一维,然后退化为二维偏序问题 四维偏序及更高: 这种题的数据范围肯定大不了,其实已经脱离了普通偏序的范畴 直接$O(n^2)$枚举 高维树状数组 各种套树 求大神们补充。。。我不会了。。。 来源: https://www.cnblogs.com/hzoi-DeepinC/p/11763510.html

模拟测试20191028

妖精的绣舞 提交于 2019-12-02 16:04:49
$T1:Dove 打扑克$ 根据等差数列求和公式,我们发现同时最多有$450$种大小,约为$\sqrt n$ 那么我们可以用并查集维护块的大小,以及块大小为多少的块有多少个 用STL瞎搞一下就好,$O(q\sqrt n logn)$可过 还有一种$O(q\sqrt n)$的做法 我多一个$log$的原因是每次遍历的是$set$而不是数组 考虑直接用数组维护 数组虽然不支持$O(n)$以下复杂度的删除,但是由于我们数组大小只有$\sqrt n$,暴力删除就好了 $T2:Cicada 与排序$ 大神题(概率期望都是大神题 显然我们只关心相同数之间的相对位置 考虑对每个数分别$dp$ 设$dp_{i,j,k}$第$k$层当前处理的数中第$i$个放到第$j$个位置的概率,$g_{a,b,i,j}$表示左边$a4个数,右边$b$个数时左边第$i$个放到第$j4个的概率 转移显然有$dp_{i,j,k}=\sum\limits _{t=1}^{a+b} dp[i][t][k+1]*g[a][b][t][j]$ 求$g$有很显然的$dp$,不再赘述 $T3:Cicada 拿衣服$ (暴力都能过的题有什么好讲的) 这题突破口在$or-and$上 考虑对于确定的右端点,往左扫时满足如下性质 $1,or-and$最多有$log$种取值,且每种取值连续 $2,or-and$单调递增 $3,min-max

数据结构中的堆(Heap)

泪湿孤枕 提交于 2019-12-02 12:06:22
来源: https://www.jianshu.com/p/6b526aa481b1 堆 就是用 数组 实现的 二叉树 ,所有它没有使用父指针或者子指针。 堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。 堆的常用方法: 构建 优先队列 支持 堆排序 快速 找出一个 集合中的最小值 (或者 最大值 ) 在朋友面前装逼 堆属性 堆分为两种: 最大堆 和 最小堆 ,两者的差别在于节点的排序方式。 在 最大堆 中, 父节点 的值比 每一个子节点 的值 都要大 ; 在 最小堆 中, 父节点 的值比 每一个子节点 的值都要 小 。 这就是所谓的“ 堆属性 ”,并且这个属性对堆中的 每一个节点 都成立。 例子: 这是一个 最大堆 ,因为 每一个 父节点 的值都 比其 子节点 要大 。 10 比 7 和 2 都大。 7 比 5 和 1 都大。 根据这一属性,那么最大堆总是将其中的 最大值 存放在树的 根节点 。而对于最小堆,根节点中的元素总是树中的最小值。 堆属性非常的有用,因为堆常常被当做 优先队列 使用,因为可以快速的访问到 “最重要”(优先级高) 的元素。 注意: 堆的根节点中存放的是最大或者最小元素,但是 其他节点的排序顺序 是 未知 的。例如,在一个 最大堆 中,最大的那一个元素总是位于 index 0 的位置,但是 最小的元素 则 未必是 最后一个元素。--唯一能够保证的是

LeetCode 初级动态规划问题

爱⌒轻易说出口 提交于 2019-12-02 11:12:48
LeetCode 初级动态规划问题 “动态规划”的步骤 分治法的精髓: 基本思想与策略编辑: 爬楼梯 T:2019/10/24 W:0 12:50:21 解 买卖股票的最佳时机 T:2019/10/24 W:0 12:50:21 解 最大子序和 `T:2019/10/25 W:5 10:19:17` 解 打家劫舍 `T:2019/10/25 W:5 13:41:9` 解 “动态规划”的步骤 “动态规划”的两个步骤思考:“状态”以及“状态转移方程”。 有的资料又将“动态规划”分为 3 步: base case :思考问题规模最小的时候,是什么情况; update function :自下而上思考这个问题,即上面的“状态转移方程”; goal :重点强调了输出是什么,很多时候输出并不一定是最后一个状态。 分治法的精髓: Ref: 分治法 分治法的精髓在于: 分 :将问题分解为规模更小的子问题; 治 :将这些规模更小的子问题逐个击破; 合 :将已解决的子问题合并,最终得出“母”问题的解; 分治法适用于: 该问题的规模缩小到一定的程度就可以容易地解决 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。 利用该问题分解出的子问题的解可以合并为该问题的解; 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题。 基本思想与策略编辑: 由于

ARTS第九周

旧巷老猫 提交于 2019-12-02 09:38:47
1.Algorithm:每周至少做一个 leetcode 的算法题 2.Review:阅读并点评至少一篇英文技术文章 3.Tip:学习至少一个技术技巧 4.Share:分享一篇有观点和思考的技术文章 以下是各项的情况: Algorithm 链接: [LeetCode-19]-remove-nth-node-from-end-of-list 题意: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 分析: 用快慢指针,快指针先移 n 个节点。 一起移动,两指针之间一直保持 n 个节点,当快指针到链表底了,操作慢指针,删除要删除的元素 时间复杂度:O(n)O(n) class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { if (head == null || n < 1) return head; // 给个负数 万一出错好排查,因为list一般给的正的 ListNode r = new ListNode(-1); r.next = head; ListNode slow = r; // 慢指针 // 快指针 ListNode fast = r; for (int i = 0; i < n; i++) { fast =

算法学习系列(三)——数组

北战南征 提交于 2019-12-02 09:08:26
数组挑了自己不太熟悉的详细写一下 3.1 三角形数组 在一些场景下,三角型数组可以用来代替矩形数组,以达到节省空间的目的,即对角线某一侧的数据可以用默认值来代替 矩形数组较小的情况下,节省空间的效果不是很明显,但在10000*10000的数组中,三角型矩阵可以节约大约5000万个条目! 如何建立一个三角形数组: 把数组的值打包成一个一维数组 跳过不用包括的条目 规律: N行数组需要的元素数是N-1行所需要的元素+N →若建立一个N行的三角型数组,需要为一个一维数组分配 个元素 通常情况下,第r行c列对应的索引公式是 3.2 稀疏数组 不表示消失条目的稀疏数组可以节约更多的空间。 建立稀疏数组的时候可以建立两个子类,一个ArrayRow类表示行,一个ArrayEntry类表示一行中的值。 ArrayRow中保存了一个行号,一个引用或指针指向下一个ArrayRow,与一个本行中第一个ArrayEntry的引用;ArrayEntry中保存了条目的列号,该条目的值,与一个指向本行下一个ArrayEntry对象的引用 来源: https://blog.csdn.net/qq_40539928/article/details/102748117

java源码解析

跟風遠走 提交于 2019-12-02 06:41:52
String深入解析 String具有不变性的原因: String被final修饰,它不可能被继承,也就是任何对String的操作方法,都不会被继承覆写 String中保存数据的是一个char数组的value,它被final修饰,它的内存地址一旦赋值无法修改 public final class String implements java . io . Serializable , Comparable < String > , CharSequence { /** The value is used for character storage. */ private final char value [ ] ; } String相等判断源码 public boolean equals ( Object anObject ) { // 判断内存地址是否相同 if ( this == anObject ) { return true ; } // 待比较的对象是否是 String,如果不是 String,直接返回不相等 if ( anObject instanceof String ) { String anotherString = ( String ) anObject ; int n = value . length ; // 两个字符串的长度是否相等,不等则直接返回不相等