220.Contains Duplicate III
Given an integer array nums and two integers k and t, return true if there are two distinct indices i and j in the array such that abs(nums[i] - nums[j]) <= t and abs(i - j) <= k.
给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在两个下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。
如果存在则返回 true,不存在返回 false。
思路:
1.暴力枚举(看看就行,卡int也不想改)
class Solution {
public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
int ans = nums.length;
for(int i=0;i<ans-1;i++){
for(int j=i+1; j<ans; j++){
if(Math.abs(nums[i] - nums[j]) <= t && Math.abs(i - j) <= k)
{
return true;
}
}
}
return false;
}
}
2.桶排
1.因为要满足nums[i] - nums[j]) <= t,所以桶的大小可以设为t+1,所以通过元素的大小来判断所在桶的id号
public long getID(long num, long t+1) {
if (num