leetcodeは重複要素II c++が存在する
1353 ワード
重複要素IIの存在
1つの整数配列と1つの整数kが与えられ、nums[i]=nums[j]となり、iとjの差の絶対値が最大kとなるように、配列に2つの異なるインデックスiとjが存在するか否かが判断される.//kより小さくてもいいです
例1:
例2:
例3:
解法1:
2 D配列を作成し、値とインデックスを格納し、値をソートし、最後に同じ値を検索し、インデックスの差がk以下であるかどうかを判断します.
解法2:
インデックスのハッシュテーブルに値をmapで格納し、mapに同じ値があるかどうかを一つ一つ検索し、ある場合はインデックス差がk以下であるかどうかを判断し、そうでない場合はmapのインデックス値を変更します.
1つの整数配列と1つの整数kが与えられ、nums[i]=nums[j]となり、iとjの差の絶対値が最大kとなるように、配列に2つの異なるインデックスiとjが存在するか否かが判断される.//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
解法1:
2 D配列を作成し、値とインデックスを格納し、値をソートし、最後に同じ値を検索し、インデックスの差がk以下であるかどうかを判断します.
class Solution {
public:
static bool cmp(const vector &a,const vector &b)
{
return a[0]& nums, int k) {
if(nums.size()<2) return false;
vector> lis(nums.size(),vector(2));
for(int i=0;i
解法2:
インデックスのハッシュテーブルに値をmapで格納し、mapに同じ値があるかどうかを一つ一つ検索し、ある場合はインデックス差がk以下であるかどうかを判断し、そうでない場合はmapのインデックス値を変更します.
class Solution {
public:
bool containsNearbyDuplicate(vector& nums, int k) {
if(nums.size()<2) return false;
map a;
for(int i=0;i::value_type(nums[i],i));
}
return false;
}
};