您的位置:首页 > 大数据 > 人工智能

LeetCode219题:Contains Duplicate II

2016-03-04 19:14 423 查看
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 difference between i and j is
at most k.

问题需求:

给与一个整型数组,同时给于一个整数k,寻找该数组是否有两个相等的数,且这两个数之间间隔的数字个数小于k个,即nums[i]==nums[j],且i与j之差的绝对值不大于k。

问题分析:

两数相等,且两个数之间间隔数字个数少于k个,等价于,对给定的第i个数字,在偏移量i+k的范围内,是否能够找到一个数其数值等于第i个数,当i从零一直到数组的末尾(即遍历完整个数组)都没找到,则不存在,如对于任意有效的i,在i+k的范围内,能够找到相等的数,就是存在。

bool containsNearbyDuplicate(int* nums, int numsSize, int k) {
int currentPosition;
int point;
//遍历数组每轮确定一个位置上面的数是否满足要求
for(currentPosition = 0;currentPosition<numsSize;currentPosition++){
// 注意这里循环条件,首先要在有效范围之内,其次偏移量不可以超出数组长度
for(point = currentPosition+1;point-currentPosition<=k && point<numsSize;point++){
// 如果任意位置有符合条件的数据
if(nums[currentPosition]==nums[point]){
return 1;
}
}
}
return 0;//如果一直没有符合条件的数则返回零
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: