zoukankan      html  css  js  c++  java
  • lintcode 1368.相同数字

    给一个数组,如果数组中存在相同数字,且相同数字的距离小于给定值k,输出YES,否则输出NO。

    注意事项
    输入的数组长度为n,保证n <= 100000。
    数组元素的值为x,0 <= x <= 1e9。
    输入的k满足 1 <= k < n。
    您在真实的面试中是否遇到过这个题?
    样例
    给出 array = [1,2,3,1,5,9,3], k = 4, 返回 "YES"。

    解释:
    index为3的1和index为0的1距离为3,满足题意输出YES。

    给出 array =[1,2,3,5,7,1,5,1,3], k = 4, 返回 "YES"。

    解释:
    index为7的1和index为5的1距离为2,满足题意。

    解答:只需要用哈希表来存储数字即可,关键字为“数字”,键值为“下标”,遇见相同的数字计算距离即可,之后按照要求返回

     1 class Solution {
     2 public:
     3     /**
     4     * @param nums: the arrays
     5     * @param k: the distance of the same number
     6     * @return: the ans of this question
     7     */
     8     string sameNumber(vector<int> &nums, int k) {
     9         // Write your code here
    10         unordered_map<int, int> m;
    11         string s = "NO";
    12         for (int i = 0; i < nums.size(); i++)
    13         {
    14             if (m.find(nums[i]) != m.end())
    15             {
    16                 if (i - m[nums[i]] < k)
    17                 {
    18                     s = "YES";
    19                     return s;
    20                 }
    21                 else
    22                     m[nums[i]] = i;
    23             }
    24             else
    25                 m[nums[i]] = i;
    26         }
    27         return s;
    28 
    29     
  • 相关阅读:
    推理思维
    模糊数学
    Android 加法程序
    线程特点
    单例模式的优缺点
    lua 字符串过滤,特殊字符过滤
    cocos2dx
    cocos2dx之控制台输出
    C++基础(using)
    生活常识
  • 原文地址:https://www.cnblogs.com/dapeng-bupt/p/8904393.html
Copyright © 2011-2022 走看看