精华内容
下载资源
问答
  • 今天面试的时候,遇到一个很简单的问题,但是面试官要求... 所以张三的值是10、15、20(平均值是15),李四的值是99(平均值是99),王五飘过。题目要求输出也是一个长度为4的list3,它的元素和list1对应,写成[15, 1...

    今天面试的时候,遇到一个很简单的问题,但是面试官要求最短的运行时间以及最简洁的写法。

    假设list1 = ["张三", "张三", "王五", "张三", "李四"]; list2 = [10, 15, 1, 20, 99]; 所以张三的值是10、15、20(平均值是15),李四的值是99(平均值是99),王五飘过。

    题目要求输出也是一个长度为4的list3,它的元素和list1对应,写成[15, 15, 1, 15, 99]。

    我第一反应是遍历,然后建立字典,储存所有list1中的不同元素的下标,然后去list2里找对应的数值。但是我觉得这个办法有点笨。

    dict=defaultdict(list); mapping={}; list3=[]

    for index, item in enumerate(list1):

    dict[item].append(index) # 生成一个字典 {张:[0,1,3];李:[4];王:[2]}

    for key in dict.iterkeys():

    sum = 0; av=0

    for element in dict[key]:

    sum += list2[element];

    av = sum / len(dict[key])

    mapping[key] = av # 生成另一个字典 {张:15;李:99;王:1}

    for index, item in enumerate(list1):

    list3.append(mapping[item]) # 遍历list1来生成list3

    面试官问:“假设有一个数值的list4=[10, 20, 30, 40, 50],另有一个下标的list5=[0, 2, 4],要求根据list5找出list4[0]、list4[2]、list4[4]的总和,除了像刚才那样遍历,还有其他方法吗?” 我一时语塞。

    所以请教一下大家:

    1 把list1中的张、王、李对应的list2中的数值取出,再生成和list1对应的list3,除了像刚才那样建立字典,还有简单其他方法吗?用zip和izip么?

    2 把数值list4的元素根据下标list5取出并且运算,除了像刚才那样建立遍历,还有简单其他方法吗?

    谢谢了先!

    展开全文
  • 怎样高速取一段区间的平均值 用前缀的思想来看 很easy 可是 本题题意要求的是 大于等于一段长度的区间的平均值的最大值 并且给出的数据范围非常大 O(n*L)的直白比較算法 用于解决此问题不合适 这样的情况下 能够...

    怎样高速求取一段区间的平均值 用前缀的思想来看 很easy

    可是 本题题意要求的是 大于等于一段长度的区间的平均值的最大值 并且给出的数据范围非常大 O(n*L)的直白比較算法 用于解决此问题不合适

    这样的情况下 能够考虑用斜率来表示平均值 然后通过对斜率的讨论和比較斜率来找出最大平均值

    我感觉是维护一个从当前点往前的最大斜率——去除上凸点(它和当前点的连线肯定不能是最大斜率)

    code(别人的orz...)

    #include <stack>
    #include <cstdio>
    #include <list>
    #include <cassert>
    #include <set>
    #include <iostream>
    #include <string>
    #include <vector>
    #include <queue>
    #include <functional>
    #include <cstring>
    #include <algorithm>
    #include <cctype>
    #include <string>
    #include <map>
    #include <cmath>
    using namespace std;
    #define LL long long
    #define ULL unsigned long long
    #define SZ(x) (int)x.size()
    #define Lowbit(x) ((x) & (-x))
    #define MP(a, b) make_pair(a, b)
    #define MS(arr, num) memset(arr, num, sizeof(arr))
    #define PB push_back
    #define X first
    #define Y second
    #define ROP freopen("input.txt", "r", stdin);
    #define MID(a, b) (a + ((b - a) >> 1))
    #define LC rt << 1, l, mid
    #define RC rt << 1|1, mid + 1, r
    #define LRT rt << 1
    #define RRT rt << 1|1
    const double PI = acos(-1.0);
    const int INF = 0x3f3f3f3f;
    const double eps = 1e-8;
    const int MAXN = 1e5 + 10;
    const int MOD = 1e9 + 7;
    const int dir[][2] = { {-1, 0}, {0, -1}, { 1, 0 }, { 0, 1 } };
    int cases = 0;
    typedef pair<int, int> pii;
     
    int Q[MAXN], arr[MAXN];
    char str[MAXN];
     
    int Check(int x1, int x2, int x3, int x4)
    {
        return (arr[x2] - arr[x1-1]) * (x4-x3+1) - (arr[x4]-arr[x3-1])*(x2-x1+1);
    }
     
    int main()
    {
        //ROP;
        int T;
        scanf("%d", &T);
        while (T--)
        {
            int len, L;
            scanf("%d%d", &len, &L);
            scanf("%s", str+1);
            for (int i = 1; i <= len; i++) arr[i] = arr[i-1] + str[i] - '0';
            int head = 0, tail = 0;
            pii ans = MP(1, L);
            for (int i = L; i <= len; i++)
            {
                int j = i-L;
                while (head+1 < tail && Check(Q[tail-2], j, Q[tail-1], j) >= 0) tail--;
                Q[tail++] = j+1;
                while (head+1 < tail && Check(Q[head], i, Q[head+1], i) <= 0) head++;
                int tmp = Check(Q[head], i, ans.X, ans.Y);
                if (tmp > 0 || (tmp == 0 && i - Q[head] < ans.Y - ans.X))
                    ans.X = Q[head], ans.Y = i;
            }
            printf("%d %d\n", ans.X, ans.Y);
        }
        return 0;
    }


    展开全文
  • 怎样正确两个数的平均值

    千次阅读 2017-11-07 00:32:33
    1.先来看一个例子: int main() { int a,b,aver; scanf(&amp;quot;%d %d&amp;quot;,&amp;amp;amp;a,&...写出这个程序后,大家可能会说这个程序输出的平均值不准确,小数

    1.先来看一个例子:

    int main()
    {
    	int a,b,aver;
    	scanf("%d %d",&a,&b);
    	aver=(a+b)/2;
    	printf("%d",aver);
    	return 0;
    }
    

    写出这个程序后,大家可能会说这个程序输出的平均值不准确,小数点后都的数都没有,好了,这时我们如果把int换为我们想要的其他的类型,此问题就可以解决;但这个程序还存在一个很严重的问题,就是大数越界的情况。
    如果我们求两个非常大的数的平均值,这两个数想加之后刚好就大于我们所定义类型(不一定是int)的最大值,此时的这个程序就会出错,计算的结果就不对,所以我们要想另外的办法来求两个数的平均值,并且在不越界的情况下完成。看下面代码:

    int main()
    {
    int a,b,aver;
    scanf("%d %d",&a,&b);
    aver=(a-b)/2+b;
    printf("%d",aver);
    return 0;
    }
    

    好了,上面的代码就完全可以解决越界的问题;我们来看下它是怎么完成的;

    1.我们先假如a>b;a-b就是两个数的差值,之后取它的一半,再把它加给小的那个数,此时的值就是两个数的平均值;图中红色部分就是a-b的值,绿色部分是(a-b)/2的值,很明显,通过这样运算之后就可以求出aver得值,如果我们假设a的值就是int类型中最大的值,那么它不能再加灵位一个数了,否则就会越界,所以,如果让它减去另外一个数b,此时a-b的值一定肯定不会越界,之后用小的数b加上它们差值的一般就是ever的值,所以就巧妙的解决了这个问题。
    2.如果b>a;那么aver=(a-b)/2+b还是会成立,只不过此时a-b的值就是个负数,大数加一个负数就相当于这个数减去差值的一半,所以此方法很有用。
    最后附上我的博客地址,和大家一共学习。—>博客地址

    展开全文
  • java中两个数的平均值怎样防溢出? 两数名均值,大多数人可能会写成下面形式 public static int mean(int a, int b){ return (a + b) / 2; } 稍微优化一下可以写成下面的形式 public static int mean(int a,...

    java中求两个数的平均值,怎样防溢出?

    两数求名均值,大多数人可能会写成下面形式

    public static int mean(int a, int b){
        return (a + b) / 2;
    }
    

    稍微优化一下可以写成下面的形式

    public static int mean(int a, int b){
        return (a + b) >> 1;
    }
    

    还可能写成:

    public static int mean(int a, int b){
        return (a + b) >>> 1;
    }
    

    但是,当a=0xffff,b=0001时,由于结果溢出,产生错误。

    下面为防溢出算法:

    • 1、将相同的位进行相加,结果等于两数按位与的结果的两倍;
    • 2、将不同的位进行相加,其结果等于按位异或的结果。
    public static int mean(int a, int b){
        return (x & y) + ((x ^ y) >> 1);
    }
    
    展开全文
  • 表:T S_Name S_YuWen S_ShuXue ------------------------- 张三 80 80 李五 0 100 需要得到的结果: S_Name S_YuWen S_ShuXue [color=#800000]S_AVG[/color] ------------------------------...李五 0 100 50
  • 对于数据的缺失值的问题,我们有一些处理方法(参考第5章) 目前该章节处理的方案是:将缺失值NaN(Not a Number缩写),全部用平均值来替代(如果用0来处理的策略就太差劲了)。 二 开发流程 1、收集数据:提供文本文件...
  • (x&y)+((x^y)>>1),把x和y里对应的每一位(指二进制位)都分成三部分,每一类分别计算平均值,最后汇总。其中,第一部分是x,y对应位都是1,用x&y计算其平均值;第二部分是x,y中对应位有且只有一位是1,用(x^y)>>1...
  • 求平均年龄

    2021-02-18 21:52:47
    求平均年龄 描述 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。 输入 第一行有一个整数n(1<= n <= 100),表示学生的人数。...求平均值怎样的呢?
  • java新手求解: int p1 = 10, p2 = 9, p3 = -1, p4 = 4, p5 = 8; 找出中间值(不是平均值)赋值到p6. 要是一个个列举 得120种 用怎样的算法比较方便?大佬给个思路! 谢谢
  • 展开全部标准正态分布的上α分位点:设X~N(0,1),对于任给的62616964757a686964616fe4b893e5b19e31333431363638α,(0Zα)= α的点Zα为标准正态分布的上α分位点。...别为2.32与2.33,故可取其算术平均值为上0.0...
  • 你有没有认真的考虑过日活和月活是怎么计算的,它们的背后具有怎样的逻辑定义?一直以来都是做微信内的产品比较多,包括公众号,小程序。以往看数据,说到日活、月活,很理所当然的就想到了微信后台给提供的数据。...
  • 【NOIP模拟】平均

    2016-06-26 07:53:56
    找出一段长度至少为K的连续序列,最大化它的平均值。 请注意:一段子序列的平均值是子序列中所有数的和除以它的长度。Solution一看到什么最大最小值什么的就要想到用二分答案。 然后是平均数,要求他要大于某个...
  • 假设创建名为MyMath的包, 这个包有两个功能, 求最大值,求平均值。 那么应该构建一个如下图一样的文件结构。 测试文件应该放在和包同级的路径。 ---MyMath |---- __init__.py |---- getmax.py |----getavg.py...
  • 无向图的连通分量 算法

    万次阅读 2011-07-16 00:58:48
    耗时两天,终于把怎样求无向图的连通分量看懂了。算法是以前老师告诉我的吧,现在忘了,所以才看明白 一个无向图放在一个矩阵里面,比如一个3*3的list [0] list [1]list [2]循环遍历,如果两两组合,找出最小值与...
  • 窗口函数的主要作用是对数据进行分组排序、求和、求平均值、计数等。对于数据从业者来说, sql窗口函数在实际工作中具备非常广泛的应用场景。可以大大的提高数据查询效率,同时也是数据类相关岗位的面试/笔试的必...
  • //定义空数组用于AD0808取平均值 uchar scale=20,rsd_sec; //定义占空比比例,热释电计时秒变量 char min,sec; //定义计时分秒 uchar lum; //ad0808读出值 bit bdata flag_auto, //自动切换...
  • 货车维修费用的平均值  4.对驾驶时间超过50小时的司机增加薪水5%,没超过的加3% 5.删除维总修费用超过100,000的记录 请为某保险公司设计并实现其汽车保险管理信息系统。某汽车保险公司数据库需要保存人员...
  • 如何实现求平均值时只对不等于零的数求均值? 平均分的问题 怎样求最大值(最小值或中间值)平均数怎么弄 去掉其中两个最大值和两个最小值的公式 去一行最高分最低分求平均值 在9个数值中去掉最高与最低然后求平均值...
  • C语言文件的读入与写入

    千次阅读 多人点赞 2018-08-04 18:05:32
    碰巧今天朋友让我帮他编写一个C语言程序,对他数模要用到的大量数据求平均值(每天不同时刻对某一物理量进行检测,持续几十天,求那些时刻测得的物理量的平均值)。代码很简单,关键是要掌握怎样对文件进行读入和...
  • 碰巧今天朋友让我帮他编写一个C语言程序,对他数模要用到的大量数据求平均值(每天不同时刻对某一物理量进行检测,持续几十天,求那些时刻测得的物理量的平均值)。代码很简单,关键是要掌握怎样对文件进行读入和...
  • python高级操作

    2020-02-09 22:57:56
    1.去掉最大值和最小值,然后求平均值 def drop_first_last(grades): first, *middle, last = grades return sum(middle) / len(middle) 2.在迭代操作或者其他操作的时候,怎样只保留最后有限几个元素的历史记录?...
  • 表A: aabb ---- a 2 b 5 c 1 c 4 d 2 a 2 c 4 d 9 请问怎样求出,表A中aa的平均值大于2的总数 sum(aa)/count...
  • EXCEL函数公式集

    热门讨论 2010-03-16 03:26:38
    如何实现求平均值时只对不等于零的数求均值? 平均分的问题 怎样求最大值(最小值或中间值)平均数怎么弄 去掉其中两个最大值和两个最小值的公式 去一行最高分最低分求平均值 在9个数值中去掉最高与最低然后求平均值...
  • 取平均 简单粗暴,直接将两个传感器获得的数据求平均值:(A+B)/2(A+B)/2(A+B)/2,good。 加权平均 假设传感器A精度比传感器B高,那么就可以就可以使用加权平均来计算:A∗ω+B∗(1−ω),ω∈(0.5,1)A*\omega+B*(1-\...
  • 在数据库中,每天的每一个小时会有一条数据插入,怎样获取最近七天或者一个月的数据,每天只需要一个,以每天24个数值的平均值作为一天的代表数据???????代码
  • 初中物理易错知识点总结 很多学生在学习物理的时候感觉物理很难学,怎样才能提高物理考试成绩呢?...某段路上的平均速度,不是速度的平均值,只能是总路程除以这段路程上花费的所有时间,包含中间停的时间。 ....
  • 模型评估方法

    2019-09-26 11:27:17
    问题背景 我们只有一个包含m个...留出法直接将数据集D划分为两个互斥的集合,其中训练集为S,测试集T,即D=SUT,SnT=空集,留出法一般是多次随机划分,然后求平均值,其中训练集大概要在2/3~4/5之间。 交叉验证法 ...

空空如也

空空如也

1 2 3 4
收藏数 66
精华内容 26
关键字:

怎样求平均值