• 金山最后一个笔试题--容器盛水问题


    链接:https://www.nowcoder.com/questionTerminal/f92929ec6e5642a690e7c197b0c40e38?answerType=1&f=discussion

    给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个容器,请返回容器能装多少水。
    具体请参考样例解释
    输入描述:
    第一行一个整数N,表示数组长度。

    接下来一行N个数表示数组内的数。
    输出描述:
    输出一个整数表示能装多少水。


    直接看的题解:利用双指针,每次挪动指针都能确定一个位置的盛水量。
     1 // 最主要的就是确定盛水区间,虽然没办法短时间内理论证明,但这样应该是对的   
     2 // 从后到前,从前到后二次遍历,遇到比较小的,置为0,遇到比较大的,更新值  =》》很遗憾,只能通过40%的用例
     3 // 还是看题解吧
     4 #include<vector>
     5 #include<iostream>
     6 using namespace std;
     7 
     8 int main()
     9 {
    10     int N;
    11     cin >> N;
    12     long long sum = 0;
    13     vector<int> arr(N);
    14     for (int i = 0; i < N; ++i)
    15     {
    16         cin >> arr[i];
    17     }
    18     auto l = arr.begin();//左指针
    19     auto r = --arr.end();//右指针
    20     int lower = 0;
    21     int level = 0;
    22     while (l < r)
    23     {
    24         lower = *l < *r ? *l++ : *r--;
    25         level = level>lower ? level : lower;
    26         sum += level - lower;
    27     }
    28     cout << sum << endl;
    29 }
    心之所愿,永不相忘
  • 相关阅读:
    javascript中的复制
    使用tensorflow-serving部署tensorflow模型
    Linux端口命令
    intellij idea强制更新索引
    The minimum required Cuda capability is 3.7.
    tensorflow没有代码提示的问题
    何为学术能力
    PageRank算法
    keras的训练引擎:train_array.py和train_generator.py
    如何阅读源代码
  • 原文地址:https://www.cnblogs.com/zgll/p/15391469.html
Copyright © 2020-2023  润新知