const average = data=>data.map((item, idx, origin)=>Math.round(origin.slice(0,idx+1).reduce((a, b)=>a + b, 0) / (idx + 1)));1.用map遍历求值2.map中的第三个参数origin可以放回当前的值3.reduce((a+b)=>a+b,0)当a为undefined,0参数赋值给a…
最(大)小堆的性质: (1)是一颗完全二叉树,遵循完全二叉树的所有性质. (2)父节点的键值(大于)小于等于子节点的键值 堆的存储 一般都用数组来表示堆,i结点的父结点下标就为(i – 1) / 2.它的左右子结点下标分别为2 * i + 1和2 * i + 2.如第0个结点左右子结点下标分别为1和2. 海量数据前n大,并且n比较小,堆可以放入内存 [基本原理及要点]           最大堆求前n小,最小堆求前n大.方法,比如求前n小,我们比较当前元素与最大堆里的最大元素,如果它小于最大元素…
Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14106   Accepted: 7018 Description The little cat is so famous, that many couples tramp over hill and dale to Byteland, and asked the little cat to give names t…
日常工作中,会需要用SQL求平均值,分别是求某一项的平均值或求某一个对象的平均值,放到表格就是求一行中的几个字段的平均值和求一列的平均值. 第一种:[列的平均值]AVG:这个函数相信大家都不陌生的,求平均值 如图:想求班级的各个科目的平均分,这个时候就要用到avg:首先,根据班级进行分组,然后再求出各个班级各个科目的平均值 第二种:[多列的平均值-行]通过先求和,再除以几个字段,得出平均值 如图:各个科目的分数,分别是一列,如果想求一个同学各个科目的平均分呢?这个时候,你脑海想到是不是avg,但…
---恢复内容开始--- 没有题目,没有题意,这是学长提过的一个技巧,给你两个排好序的序列,每次可以各从中取一个,求前k大的和, 一个优先队列,先将a序列中最大的那个和b序列所有元素相加存进队列中,每次弹出最大的那个时(ai,bj),把(ai+1,bj)存进去,就行了: #include<iostream>#include<algorithm>#include<queue>using namespace std;struct node{ int sum; int x;…
求前k小的数,一般人的想法就是先排序,然后再遍历,但是题目只是求前N小,没有必要完全排序,所以可以想到部分排序,而能够部分排序的排序算法我能想到的就是堆排序和快排了. 第一种思路,局部堆排序. 首先,建立一个大小为N的大顶堆,时间复杂度klgk,然后用其余的数和堆顶元素比较,如果小于堆顶元素则与堆顶元素交换,并进行一次调整,时间复杂度(n-k)lgk,然后klgk可以常数级,(n-k)lgk=O(n). 第二种思路,利用快排的partition. 只需要稍微修改qsort函数即可,增加判断条件,…
求前n项正整数的倒数和 前n项正整数的和是一个发散的序列,学过高等数学的这个都知道.所以它没有一个精确的公式,但是近似的公式是有的: 1 + 1/2 + 1/3 + …… + 1/n ≍ ln n + γ, 其中 γ 是欧拉常数, 值为 γ=0.577215,66490,15328,60606,51209,00824,02431,04215,93359,39923,59880,57672,34… 证明: 根据Newton的幂级数有: ln(1+1/x) = 1/x - 1/2x^2 + 1/3x…
Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符的美妙度为Ai,其中Ai可正可负. 一个“超级和弦”由若干个编号连续的音符组成,包含的音符个数不少于L且不多于R.我们定义超级和弦的美妙度为其包含的所有音符的美妙度之和.两个超级和弦被认为是相同的,当且仅当这两个超级和弦所包含的音符集合是相同的. 小Z决定创作一首由k个超级和弦组成的乐曲,为了使得乐曲更加动…
对于曾经,假设要我求第k小元素.或者是求前k大元素,我可能会将元素先排序,然后就直接求出来了,可是如今有了更好的思路. 一.线性时间内求第k小元素 这个算法又是一个基于分治思想的算法. 其详细的分治思路例如以下: 1.分解:将A[p,r]分解成A[p,q-1]和A[q+1,r]两部分.使得A[p,q-1]都小于A[q],A[q+1,r]都不小于A[q]; 2.求解:假设A[q]恰好是第k小元素直接返回,假设第k小元素落在前半区间就到A[p,q-1]递归查找.否则到A[q+1,r]中递归查找. 3…
需求描述 编写一个工具类,对ArrayList实现以下功能: ① 排序 ② 求最大值 ③ 求最小值 ④ 求平均值 需求实现 实现代码 package cn.test.logan.day04; import java.util.ArrayList; /** * 编写一个工具类:对整型的Arraylist实现排序.求最大值.最小值.平均值等 * @author QIN * */ public class ListUtils { // 排序 public static void sort(ArrayL…
20 [程序 20 求前 20 项之和] 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和. 程序分析:请抓住分子与分母的变化规律. package cskaoyan; public class cskaoyan20 { @org.junit.Test public void sum() { double numerator = 2; double denominator = 1; double total = 0; for (int…
从键盘输入一个整数n,求前n项的阶乘之和,1+2!+3!+...+n!的和 输入格式: 输入一个大于1的整数.例如:输入20. 输出格式: 输出一个整数.例如:2561327494111820313. 输入样例: 在这里给出一组输入.例如: 20 输出样例: 在这里给出相应的输出.例如: 2561327494111820313 def f(n): ans = 1 for i in range(1,n+1): ans *= i return ans n = int(input()) sum = 0…
题意:      给你一个二维矩阵,n*n的,每次从每一行中拿出来一个,然后加起来组成一个和,一共可以得到n^n个和,要求求出这n^n个和中最小的那n个和. 思路:      多路归并问题,先说下多路归并问题,我的理解是有个变量,每个变量都按照自己的变化规律在变化着,每次一旦选用每个变量,那么这个变量就会根据自己的变化规律变化,这种问题我们可以用优先队列来解决,首先我们可以把所有变量都扔进队列,然后在在里面取出一个最小的(或者最大的)作为当前答案,然后把取出来的数值变化后在扔进队列里,如此反复操…
可遇不可求的Question之导入mysql中文乱码解决方法篇 先 set names utf8;然后 source c:\1.sql ?…
运用NodeJs环境并依赖第三方库,框架等实现网站前后端分离报错问题及处理方法 问题一: SyntaxError: missing ) after argument list in .....\views\user\index.html while compiling ejs. 语法错误:失去右括号)在参数列表后面,在.....\views\user\index.html(在这个路径中的index.html)中当编译ejs时. 分析:这个时候应该是模板引擎ejs出现问题,但是ejs已经是一个写好…
题目描述 有一分数序列:2/1.3/2.5/3.8/5.13/8.21/13.......求出这个数列的前N项之和,保留两位小数. 输入描述 N 输出描述 数列前N项和 样例 输入: 输出: 16.48 第一次code: 使用递归: import java.util.*; import java.math.BigDecimal; public class jisuanrong { public static double SimpleAdding(int num) { if(num==1 ||…
题目传送门:https://www.nowcoder.com/acm/contest/144/J 题意:给一个function,构造n个数,求出其中任意两个的lcm的最大值. 分析:要求最大的lcm,大概分析一下,差不多就在里面的最大的k个里,k^2求出答案. 因为n(1e7),sort会tle,需要一个效率更低的排序来求出前k大. #include<bits/stdc++.h> using namespace std; ; typedef unsigned ui; typedef unsig…
1.题目描述 Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array. 计算二叉树每一层的节点的数据域的平均值. 2.题目分析 使用广度优先遍历方法,逐层对二叉树进行访问,求均值.使用一个队列数据结构完成对二叉树的访问,队列(queue)的特点是FIFO,即先进先出,queue的几种常用的方法是: queue::front()  :访问队首…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3613 题目大意: 大意就是将字符串s分成两部分子串,若子串是回文串则需计算价值,否则价值为0,求分割字符串s能获得的最大价值. 解题思路:将原串s反转得到rs,然后进行rs,s扩展KMP匹配,得到extend,对于s1的前i个字符如果和s2的后i个字符相等即extend[len-i] == i则前i个字符为回文串: 同理,判断后len-i个字符是否是回文串用s,rs进行扩展KMP再生成一个exte…
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和.分析:请抓住分子与分母的变化规律.三个连续分数之间的规律是:上两个分子之和等于第三个分数的分子,上两个分母之和等于第三个分数的分母 public class Prog20{ public static void main(String[] args){ double n1 = 1; double n2 = 1; double fraction = n1/n2; double Sn = 0;…
HDU4686 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4686 题意:题目说的很清楚了,英语不好的猜也该猜懂了,就是求一个表达式的前n项和,矩阵快速幂一般多加一行一列来完成这个加的操作.具体看代码吧.比较简单,唯一有一点坑的地方,就是ax和bx可能比较大,在求ax*bx的时候,要考虑溢出的问题,需要先mod.其他没有了,直接看代码吧! //Author: xiaowuga #include <bits/stdc++.h> #define…
这种技巧是挺久以前接触的了,最近又突然遇到几道新题,于是总结了一下体会. 这种算法适用的前提是,标题所述的"状态集合"大到不可枚举(否则枚举就行了qaq),且\(k\)一般是在\(10^6\)这个数量级以下. 前置技能:Dijkstra算法,及其思想和正确性证明. 传送门1:思想和正确性证明 传送门2:优先队列优化dijkstra 先看一个问题: 给\(m\)(\(2 \leq m \leq 10\))个长度为\(n\)(\(n \leq 10^5\))的整数…
题意: 给出一个仙人掌图,然后求他的前K小生成树. 思路: 先给出官方题解 由于图是一个仙人掌,所以显然对于图上的每一个环都需要从环上取出一条边删掉.所以问题就变为有 M 个集合,每个集合里面都有一堆数字,要从每个集合中选择一个恰好一个数加起来.求所有的这样的和中,前 K 大的是哪些.这就是一个经典问题了. 点双联通就不说了 都一眼能看出来做法就是缩点之后每个环每次取一个,然后找最大的k个所以这道题的难点就在这里,做法当然是不知道啦,看了题解和博客才懂的.以前做过两个集合合并的,这个是k个合并,…
Time Limit: 10 second Memory Limit: 2 MB 问题描述 完全数又称完数.完美数.完备数,是一些特殊的自然数,它所有真因子(即除自己以外的因子)的和等于它本身.例如:6=1+2+3,6是一个完数. 至今为止,人类共发现了46个完数,由于简单类型的数据范围有限,所以仅能求出前n(n<=8)个完数. Input 一个整数n Output 有n行,输出前n个完数,每个数占一行 Sample Input 3 Sample Output 6 28 496 [题解] 如果直…
function f(n) { var num1 = 1, num2 = 1; if (n == 1) document.write(num1);//n=1,输出1 else if (n > 1) { document.write(num1 + " " + num2 + " ");//n>=2;先输出前2项 for (var i = 3; i < n; i++) { var result = num1 + num2; document.write(…
输入一个输n,输出前n个素数. #include<iostream> #include <math.h> using namespace std; class Sushu { public: Sushu() { num = ; } ~Sushu() { } bool isSushu() { ; i <=sqrt(num); i++) { ) return false; } return true; } int getSushu() { return num; } void p…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3613 题目大意: 题目大意就是将字符串s分成两部分子串,若子串是回文串则需计算价值,否则价值为0,求分割字符串s能获得的最大价值. 解题思路: 用manacher算法计算出p[i],每次计算p[i]是顺便计算一下这段回文串是否能到达边界,若能则计算出前缀或者后缀的结束位置,标记起来.//还有之前数组开1e6+5教C++是错的,改成2e6+5就对了,不觉明历.... 代码(复杂点的) #include…
题目链接:http://poj.org/problem?id=3376 题目大意:给你n个字符串,这n个字符串可以两两组合形成n*n个字符串,求这些字符串中有几个是回文串. 解题思路:思路参考了这里:http://blog.csdn.net/qq_30241305/article/details/50718051 做法:首先由两个字符串A,B.要使它们能组成回文串有三种情况 情况① :alen < blen abc abacba abcaba  A               B RB 如上所示…
题目链接:https://cn.vjudge.net/problem/POJ-2752 题意 给一个字符串,求前缀串跟后缀串相同的前缀串的个数 例:alala 输出:a, ala, alala 思路 仔细想想,fail[len]的返回值其实就是匹配成功的最大后缀串 得到这个后缀串后,比这个串更小的串一定还是被包含在这个新的后缀串中 迭代即可 提交过程 AC 代码 #include <cstring> #include <cstdio> const int maxm=4e5+20;…
题目: 思路: 这题是比较典型的树的遍历问题,思路就是将中序遍历作为位置的判断依据,假设有个节点A和它的父亲Afa,那么如果A和Afa的顺序在中序遍历中是先A后Afa,则A是Afa的左儿子,否则是右儿子. 用for遍历一遍所有的节点,让每一个节点都连接到它的父亲,最后从根节点开始访问即可. 代码: // // main.cpp // Tree // // Created by wasdns on 16/12/19. // Copyright ? 2016年 wasdns. All rights…