leetcode219存在重复元素C语言问题

代码如下:
bool containsNearbyDuplicate(int* nums, int numsSize, int k) {
int i,j;
for(i=0;i<numsSize;i++)
{
for(j=0;j<numsSize;j++)
{
if(nums[i]==nums[j]&&abs(j-i)<=k)
{return true;}

    }
}
return false;

}
为什么最后提交的时候不能通过[1,2,3,1,2,3] k=2的测试呢?输出为什么是true?c语言小白,求教各位大神!

0

2个回答

因为i可能和j相等,那么显然满足if(nums[i]==nums[j]&&abs(j-i)<=k)
你可以
if(nums[i]==nums[j]&&abs(j-i)<=k&&i!=j)

0
weixin_42737103
weixin_42737103 感谢!
大约一年之前 回复

i和j是会相等的,一定会满足if(nums[i]==nums[j]&&abs(j-i)<=k)
并且楼主的代码是可以优化的,要避免不必要的搜索。看楼主的代码目的应该是 判断在K范围内 是否有两个数字相等

#include
using namespace std;

bool containsNearbyDuplicate(int* nums, int numsSize, int k)
{
int i,j;
for(i=k;i<numsSize;i++)

{
for(j=i-k;j<i;j++)
if(nums[i]==nums[j])
return true;
}
return false;
}

int main()
{
int a[10]={1,2,3,1,2,3};
int b[11]={1,2,3,2,5,6};
cout<<containsNearbyDuplicate(a,6,3)<<endl;
//cout<<containsNearbyDuplicate(b,6,2)<<endl;

return 0;

}

0
weixin_42737103
weixin_42737103 我说怎么一直超时呢,谢谢大神!
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
LeetCode219——存在重复元素II
我的LeetCode代码仓:https://github.com/617076674/LeetCode 原题链接:https://leetcode-cn.com/problems/contains-duplicate-ii/description/ 题目描述: 知识点:哈希表、滑动窗口法 思路:滑动窗口法 本题是LeetCode217——存在重复元素的加强版,由于题目要求i和j的绝对...
leetcode - Contains Duplicate II -- 重点
https://leetcode.com/problems/contains-duplicate-ii/对于array 的题目,一定要想到 sort, binary search, 当要改进O(N2)O(N^2)时,要想到hash map。而对于hash map,有的时候是scan一遍之后建立完hash map再作其余判断。而像这道题,是可以在建立hash map的过程中,进行判断的。因为这里要判断
leetcode刷题--基础数组--判断存在重复(C)
给定一个整数数组,判断是否存在重复元素。 如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。 示例 1: 输入: [1,2,3,1] 输出: true 示例 2: 输入: [1,2,3,4] 输出: false 思想:(1)最暴力直接的做法是双指针法,一一比较。 bool containsDuplicate(int* nums, int num...
【Leetcode 217-存在重复元素 Contains Duplicate】(c语言版)
目录   存在重复元素 测试单元 题目分析 代码表示      大功告成 存在重复元素 给定一个整数数组,判断是否存在重复元素。 如果任何值在数组中出现至少两次,函数返回真。如果数组中每个元素都不相同,则返回错误。 示例1: 输入: [1,2,3,1] 输出: true//1 示例2: 输入: [1,2,3,4] 输出: false//0 示例3: 输入: [1...
LeetCode217存在重复元素-C语言
给定一个整数数组,判断是否存在重复元素。 如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 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 bool containsDup...
leetcode219:存在重复元素Ⅱ
思想: 1.先判断nums是否为空,为空则返回false。再判断k是否等于0,为0则返回false。 2.由于range函数后面的范围取不到则需要k+1,然后需要判断加1后的k有什么超过nums的长度。若超过,则选择nums的长度作为k值。 3.定义了一个双向队列windows来存储元素的下标,一个集合d来存储元素。 4.先从下标0开始取元素并判断是否已经存在d中,由于我们的下标范围是0-...
Leetcode219 存在重复元素II
题目 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。 方法: 对于这个题目,感觉自己蠢到爆了,因为要找数字 A 的 k 范围内相等的数字,所以刚开始一直想的事A左边k个,右边k个,在两个k范围内找。 然而可以对于每个nums[i] 都去看左边的k范围内是否存在相等的数即可。所有左...
leetcode219 存在重复元素II
存在两个相同元素的距离小于等于k值,使用字典存储第一个遇到的下标,若遇到了相同值,且距离不大于k,则返回true,否则更新字典中的下标值,因为之后如果再遇到相同值,肯定是当前值离得更近,因此需要对字典进行更新。 class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { Map...
[LeetCode] 217.存在重复元素(Easy)C语言题解
题目 给定一个整数数组,判断是否存在重复元素。 如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 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 说明 ①数据范围(自测) -...
有重复元素的全排列
#include&amp;lt;cstdio&amp;gt; #include&amp;lt;cstring&amp;gt; #include&amp;lt;algorithm&amp;gt; using namespace std; char a[11],ans[11]; int vis[11],sum,num[11]; bool check(int x,int len){ for(int i=1;i&amp;lt;len;i++) if(...
219. 存在重复元素 II(leetcode/C++)
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。示例 1:输入: [1,2,3,1], k = 3 输出: true示例 2:输入: [1,0,1,1], k = 1 输出: true示例 3:输入: [1,2,1], k = 0 输出: false一道easy题,不难,主要是考察...
leetcode 220. 存在重复元素 III (C语言
给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。 示例 1: 输入: nums = [1,2,3,1], k = 3, t = 0 输出: true 示例 2: 输入: nums = [1,0,1,1], k = 1, t = 2 输出: true 示例 ...
有重复元素的排列问题
有重复元素的排列问题 时间限制: 2 Sec  内存限制: 128 MB [提交][状态][讨论版] 题目描述 对n个元素进行全排列。这n个元素由小写字母组成,这n个元素中的某些可能相同。 [输入格式]  1 [输出格式] 每行一个序列,按字典序输出最后一行输出方案数 [输入样例] 4  aacc [输出样例] aacc a
[Leetcode] 217. 存在重复元素
题目描述:给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 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解题思路:不能存重复元素这不是典型的HashSet嘛,直接用H...
如何判定数组是否存在重复元素
题目:假设数组 array 有 n 个元素,元素取值范围是 1~n,如何判定数组是否存在重复元素? 方法一:对数组进行排序(可以用效率比较高的排序算法,如快速排序、堆排序等),然后比较相邻的元素是否相同。时间复杂度为 O(nlogn),空间复杂度为O(1)。下面借助c语言类库中自带的快速排序算法qsort,来实现排序。#include <iostream>int comp(const void *
C#LeetCode刷题之#217-存在重复元素(Contains Duplicate)
问题 给定一个整数数组,判断是否存在重复元素。 如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。 输入: [1,2,3,1] 输出: true 输入: [1,2,3,4] 输出: false 输入: [1,1,1,3,3,4,3,2,4,2] 输出: true  Given an array of integers,...
初级算法探索——数组篇(四)
问题:存在重复 给定一个整数数组,判断是否存在重复元素。 如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 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 js解决办法: ...
有重复元素的排列问题//利用全排列函数
题目描述 设R={r1,r2,……,rn}是要进行排列的n个元素。其中元素r1,r2,……,rn可能相同。使设计一个算法,列出R的所有不同排列。 给定n以及待排列的n个元素。计算出这n个元素的所有不同排列。 输入输出格式 输入格式: 第1行:元素个数n(1&amp;lt;=n&amp;lt;500) 第2行:一行字符串,待排列的n个元素 输出格式: 计算出的n个元素的所有不同排列,最后一行是排列总数。 ...
LeetCode--初级算法--数组篇--第四题--存在重复元素
题目: 给定一个整数数组,判断是否存在重复元素。 如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 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 代码:...
C语言重复数全排列的代码
【问题描述】 输入一个字符串,字符串由字母、数字组成,可能包含重复的字符。生成这些字符的不重复的全排列,并将结果打印到标准输出上。 【输入形式】 从标准输入上读入一个由字母、数字组成的字符串,字符串的长度小于100,其中包含重复的字符。 【输出形式】 向标准输出印结果。 每个排列占1行,各字符之间无空格分隔,每行由换行符结束。各行之间不必排序,但同一个排列不得重复输出。 【输入样例】 AABB 【输出样例】 AABB ABAB ABBA BABA BAAB BBAA
链表删除重复元素
问题一:      删除链表中的重复元素,但是保留重复元素的第一个元素   class Node():     def __init__(self,x):         self.value = x         self.next_p = None        方法一:删除重复元素的后一个,保留第一个 def delete_dupicate(A):     p = A     ...
C语言实现查找重复元素
/* * 文件名:repeatChar.c * 功能描述:给定一组元素值,打印出其中有重复出现的元素 * 编写人:王廷云 * 编写日期:2017-1-10 */ #include &amp;amp;lt;stdio.h&amp;amp;gt; #define NR 10 // 输入整数的个数 int main(void) { int ar[NR]; int i, j; fp...
包含重复元素的字符串全排列
思路:编写字符串全排列,首先想到的就是用递归。依次从后面的字符中选择一个不重复的字符替换掉第一个字符,即要注意排除重复选择的情况。然后递归下去,对第二个个位置的字符也采取相同的方法进行替换然后全排列 &amp;gt; &amp;gt; &amp;gt;至于needSwap为什么是从s [ start ]至s [ end - 1] 元素与s [ end ] 元素比较,而不是直接将s [ start ] 和 s [ end ...
LeetCode219删除重复元素II-c++
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 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...
leetcode-初级-存在重复元素
给定一个整数数组,判断是否存在重复元素。 如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。 /*时间复杂度很大 */ bool containsDuplicate(int* nums, int numsSize) { int i,j; for(i=0;i&amp;lt;numsSize;i++){ for(j=0;j...
递归分治法实现有重复元素的排列问题
书上例题: 1.问题描述         设集合R={r1,r2,...,rn}是要进行排列的n个元素,其中r1,r2,...,rn可能相同。 试着设计一个算法,列出R的所有不同排列。 即,给定n以及待排的n个可能重复的元素。计算输出n个元素的所有不同排列。 2.算法设计         给定n及待排列的n个元素,计算出这n个元素的所有不同排列。 3.数据输入         第1
移除数组中的重复元素-C语言
思路: 1、首先使用malloc动态分配数组的内存,再输入各个数组元素; 2、使用两层for循环嵌套,对数组遍历,判断如果出现相同数据,则将后面的数据往前移一位,记录数组长度的变量相应减1; 3、输出数组; C程序如下: #include&amp;lt;stdio.h&amp;gt; int main() { int n=0; scanf(&quot;%d&quot;,&amp;amp;n); // c...
算法设计与分析: 2-8 有重复元素的排列问题
2-8 有重复元素的排列问题 问题描述 设R=r1,r2,…,rnR=r1,r2,…,rnR={ r_1, r_2 , …, r_n}是要进行排列的n个元素。其中元素r1,r2,…,rnr1,r2,…,rnr_1, r_2 , …, r_n可能相同。试设计一个算法,列出R的所有不同排列。 编程任务 给定n 以及待排列的n 个元素。计算出这n 个元素的所有不同排列。 分治法 Ja...
leetcode -- Contains Duplicate -- 过于简单
https://leetcode.com/problems/contains-duplicate/class Solution(object): def containsDuplicate(self, nums): """ :type nums: List[int] :rtype: bool """ mydict
luogu1691_有重复元素的排列问题
luogu1691_有重复元素的排列问题 时空限制    1000ms/128MB 题目描述 设R={r1,r2,……,rn}是要进行排列的n个元素。其中元素r1,r2,……,rn可能相同。使设计一个算法,列出R的所有不同排列。 给定n以及待排列的n个元素。计算出这n个元素的所有不同排列。 输入输出格式 输入格式: 第1行:元素个数n(1&amp;lt;=n&amp;lt;500) 第2行:一行字...
leetcode 219超时方案
class Solution: def containsNearbyDuplicate(self, nums, k): if nums is None or len(nums) == 0 or k == 0: return False num_list = [] for item in nums: ...
算法分析之有重复元素的排列问题O(n!)
#include #include #include using namespace std; template void quicksort(vector& a, int left, int right, vector& next) { int L = left, R = right; eT T = a[L]; while (L < R) { while (a[R] >= T &&
删除链表中重复元素(c语言版)
输入一组数字,换行,输入要删除的元素,输出删除后的元素和元素个数。若输入字母,浮点型数据可判错。
删除一个有序数组中的重复元素
题目来自leetcode初级算法的数组 方案一 因为这个数组是有序的,所以删除的时候可以这样做。使用最小数字减去1来标记作为被删除掉的元素。然后再把数组中的有效元素移动位置就可以了。使用C语言实现如下: int removeDuplicates(int* nums, int numsSize) { int temp = nums[0]; int count = 1; in...
用C语言解决快速排序问题
快速排序分为三个部分:1,分解即分为三段  2,递归求解:通过递归进行排序  3,合并:将排好序的区间进行合并   递归进行排序 即:void QuickSort(){ if(p&amp;lt;r){ int q = Partition(Type ) QuickSort(a , p , q - 1) QuickSort(a , q + 1  , r) //分成了三段 } } Part...
含重复元素的全排列
递归的解决子字符串的全排列,这里需要注意的是重复元素需要预先判断例如 aabcbd当进行到k = 1,接下来求 子串bcbd的全排列,但是后面有两个b,无论这两个b中的哪一个与此时的a交换,后面子串都包含字符abcd 也就是 子串的全排列相同,又因为 原先的a 在相同的b交换后都变成了 b 也就是 这两种交换下的全排列相同所以重复,需要跳过保留其中的一种就可以了。查询是否重复的区间为当前进行到的位...
leetcode -- Contains Duplicate III -- 重点,medium题目
https://leetcode.com/problems/contains-duplicate-iii/思路1 sorting参考http://yucoding.blogspot.hk/2015/10/leetcode-question-contains-duplicate-iii.html思路2 sliding windows参考http://bookshadow.com/weblog/2015
LeetCode - 存在重复(Contains Duplicate)
题目 给定一个整数数组,判断是否存在重复元素。 如果任何值在数组中出现至少两次,函数应该返回 true。如果每个元素都不相同,则返回 false。 https://github.com/biezhihua/LeetCode 解法 先排序再比较。若存在一个值只在数组中出现一次,那么一定会有前后两值不等的情况出现。 public boolean containsDuplicate(int[...
单链表中重复元素的删除
Problem Description 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。 Input 第一行输入元素个数 n (1 第二行输入 n 个整数,保证在 int 范围内。 Output 第一行输出初始链表元素个数; 第二行输出按照逆位序所建立的初始链表; 第三行输出删除重复元素后
有重复元素的全排列问题
题目描述: 设R={ r1, r2, ……, rn }是要进行排列的n个元素。其中元素r1 ,r2 ,……,rn可能相同。试设计一个算法,列出R的所有不同排列。 给定n以及待排列的n个元素。计算出这n个元素的所有不同排列。 源代码: #include #include #include #define maxn 500 using namespace s