@(LeetCode)[哈希, 數(shù)組]
217題目描述
給定一個(gè)整數(shù)數(shù)組,判斷是否存在重復(fù)元素。
如果任何值在數(shù)組中出現(xiàn)至少兩次,函數(shù)返回 true。如果數(shù)組中每個(gè)元素都不相同,則返回 false。
示例 1:
輸入: [1,2,3,1]
輸出: true
示例 2:
輸入: [1,2,3,4]
輸出: false
示例 3:
輸入: [1,1,1,3,3,4,3,2,4,2]
輸出: true
解答
用hashMap來(lái)判斷元素是否存在
class Solution {
public boolean containsDuplicate(int[] nums) {
HashMap map = new HashMap();
for(int i=0;i<nums.length;i++){
if(map.get(nums[i])==null)map.put(nums[i],true);
else return true;
}
return false;
}
}
219題目描述
給定一個(gè)整數(shù)數(shù)組和一個(gè)整數(shù) k,判斷數(shù)組中是否存在兩個(gè)不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的絕對(duì)值最大為 k。
示例 1:
輸入: nums = [1,2,3,1], k = 3
輸出: true
示例 2:
輸入: nums = [1,0,1,1], k = 1
輸出: true
示例 3:
輸入: nums = [1,2,3,1,2,3], k = 2
輸出: false
解答
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
HashMap map = new HashMap();
for(int i=0;i<nums.length;i++){
if(map.get(nums[i])==null)map.put(nums[i],i);
else if((k+(Integer)map.get(nums[i]))>=i) return true;
else map.put(nums[i],i);
}
return false;
}
}