zoukankan      html  css  js  c++  java
  • 美团笔试

    题目一:

    小明拿到了一个数列a1, a2, ... an,小明想知道存在多少个区间 [l, r] 同时满足下列两个条件:

    1. r - l + 1 = k;
    2. 在al, al+1, ... ar中,存在一个数至少出现了 t 次。

    输出满足条件的区间个数。

    输入:
      输入第一行三个整数n, k, t(1 ≤ n, k, t ≤ 105);

      第二行 n 个整数,a1, a2, ... an(1 ≤ ai ≤ 105)。

    输出:
      输出一个数,问题的答案。

    样例输入
    5 3 2
    3 1 1 1 2
    样例输出
    3

    Hint
    区间[1,3]中1出现了2次,区间[2,4]中1出现了3次,区间[3,5]中1出现了2次。所以一共有3个区间满足条件。

    解题:

    #include <iostream>
    #include <cstring> 
    
    using namespace std;
    
    int arr[100000];
    int temp[100000];
    
    int main()
    {
    	int k, n, t, ans = 0;
    	cin >> n >> k >> t;
    	for(int i = 0; i < n; ++i) {
    		cin >> arr[i];
    	}
    	
    	for(int i = 0; i < n - k + 1; ++i) {
    		// 遍历[l, r]内的每一个数 
    		for(int j = i; j < i + 3; ++j) 
    			++temp[arr[j]];				// 就像桶 
    		
    		for(int m = 0; m < 100000; ++m) {
    			if(temp[m] >= t)
    				ans++;
    		}
    		memset(temp, 0, 100000);
    	}
    	cout << ans << endl;
    }
    

    分析:画图分析得到思路,就可以编码了。

    题目二:

    给定一张包含N个点、N-1条边的无向连通图,节点从1到N编号,每条边的长度为1。

    假设你从1号节点出发并打算遍历所有节点,那么总路程至少是多少?

    输入:

      第一行包含一个整数N,1 ≤ N ≤ 105

      接下来N-1行,每行包含两个整数 X 和 Y ,表示 X 号节点和 Y 号节点之间有一条边,1 ≤ X, Y ≤ N。

    输出:

      总路程的最小值。

    样例输入
    4

    1 2

    1 3

    3 4

    样例输出
    4

    解题:

  • 相关阅读:
    IOS开发中实现UITableView按照首字母将集合进行检索分组
    IOS开发中设置导航栏主题
    IOS中使用.xib文件封装一个自定义View
    IOS中将字典转成模型对象
    WindowsPhone8中LongListSelector的扩展解决其不能绑定SelectdeItem的问题
    WindowsPhone8.1 开发-- 二维码扫描
    tomcat 开机自启
    redis ubuntu 开机自启
    webStorm 中使用 supervisor 调试
    ubuntu 14.04 tab失效问题
  • 原文地址:https://www.cnblogs.com/xzxl/p/9601274.html
Copyright © 2011-2022 走看看