leetcode 219. Contains Duplicate II 学习HashMap
来源:互联网 发布:广州古藤动漫知乎 编辑:程序博客网 时间:2024/06/08 02:15
Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the absolute difference between i and j is at most k.
这道题很简单,但是要注意使用HashMap结果,建议和leetcode 217. Contains Duplicate 遍历 + HashSet 一起学习。
代码如下:
import java.util.HashMap;import java.util.Map;/* * 应该想到使用map 这种数据结构 * */public class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { if(nums==null || nums.length<=1) return false; Map<Integer, Integer> map=new HashMap<Integer, Integer>(); for(int i=0;i<nums.length;i++) { if(map.containsKey(nums[i])) { int index=map.get(nums[i]); if(i-index<=k) return true; map.put(nums[i], i); }else map.put(nums[i], i); } return false; } //这是最笨的方法 public boolean containsNearbyDuplicate1(int[] nums, int k) { if(nums==null || nums.length<=1) return false; for(int i=0;i<nums.length;i++) { for(int j=i+1; j<nums.length && j<i+k;j++) if(nums[i]==nums[j]) return true; } return false; }}
下面是C++的做法,就是使用map遍历一次即可完成
代码如下:
#include <iostream>#include <algorithm>#include <vector>#include <set>#include <map>using namespace std;class Solution {public: bool containsNearbyDuplicate(vector<int>& nums, int k) { map<int, int> mmp; for (int i = 0; i < nums.size();i++) { int a = nums[i]; if (mmp.find(a) != mmp.end()) { int j = mmp[a]; if (i - j <= k) return true; else mmp[a] = i; } else mmp[a] = i; } return false; }};
阅读全文
0 0
- leetcode 219. Contains Duplicate II 学习HashMap
- [leetcode] 219. Contains Duplicate II
- LeetCode 219. Contains Duplicate II
- LeetCode:219. Contains Duplicate II
- 【Leetcode】219. Contains Duplicate II
- Leetcode 219. Contains Duplicate II
- 219. Contains Duplicate II LeetCode
- 【LeetCode】219. Contains Duplicate II
- Leetcode 219. Contains Duplicate II
- LeetCode *** 219. Contains Duplicate II
- LeetCode 219. Contains Duplicate II
- LeetCode 219. Contains Duplicate II
- LeetCode 219. Contains Duplicate II
- leetcode 219. Contains Duplicate II
- 219.[Leetcode]Contains Duplicate II
- Leetcode 219. Contains Duplicate II
- 【leetcode】219. Contains Duplicate II
- LeetCode - 219. Contains Duplicate II
- jdk配置
- exlipse常用快捷
- java 求二叉树的深度 / 节点总数
- 容器云在万达的落地
- 设计模式-策略模式
- leetcode 219. Contains Duplicate II 学习HashMap
- art.dialog重设弹窗大小和刷新位置
- 这五大美国城市实习机会多,留学生快收藏!
- 弟弟第一次编程,赞一个Hopscotch
- mysql根据不同状态统计出现的次数
- angular简介
- redis一致性哈希算法
- 面试-字符串匹配ABBA模式
- centos7上使用docker部署Jenkins