算法--判断数组中是否有重复值

日月的弯刀 日月的弯刀     2022-08-24     627

关键词:

 


判断数组中是否有重复值

 
 

第14节 重复值判断练习题

 

请设计一个高效算法,判断数组中是否有重复值。必须保证额外空间复杂度为O(1)。

给定一个int数组A及它的大小n,请返回它是否有重复值。

测试样例:
[1,2,3,4,5,5,6],7
返回:true
 
 
1
import java.util.*;
2

3
public class Checker {
4
    public boolean checkDuplicate(int[] a, int n) {
5
        int lastIndex = n - 1;
6
        builedMaxHeap(a,lastIndex);
7
        while(lastIndex > 0){
8
            swap(a,0,lastIndex);
9
            if(--lastIndex == 0){//如果只剩一个元素,就不用重新建堆了,排序结束
10
                break;
11
            }
12
            adjustHeap(a,0,lastIndex);
13
        }
14

15
        for(int i = 0; i < n-1; i++){
16
            if(a[i] == a[i+1])
17
                return true;
18
        }
19
        return false;
20
    }
21

22

23

24
    public void builedMaxHeap(int[] arr, int lastIndex) {
25
        //从最后一个元素的父元素开始构建最大堆
26
        int j = (lastIndex - 1)/2;
27
        while(j >= 0){
28
            int rootIndex = j;
29
            adjustHeap(arr,rootIndex,lastIndex);
30
            j--;
31
        }
32
    }
33

34
    public void adjustHeap(int[] arr, int rootIndex, int lastIndex) {
35
        int childNodeIndex = rootIndex * 2 + 1;
36

37
        while(childNodeIndex <= lastIndex){//至少有一个子节点的时候,继续循环
38
            //有右孩子,并且右孩子比左孩子大,那么childNodeIndex赋值给更大的孩子
39
            if((childNodeIndex+1) <= lastIndex && arr[childNodeIndex+1] > arr[childNodeIndex]){
40
                childNodeIndex++;
41
            }
42
            //子孩子比父亲小,说明堆构建完成,跳出循环
43
            if(arr[childNodeIndex] <= arr[rootIndex]){
44
                break;
45
            }
46
            else{
47
                swap(arr, rootIndex, childNodeIndex);
48
                rootIndex = childNodeIndex;
49
                childNodeIndex = childNodeIndex * 2 + 1;
50
            }
51
        }
52
    }
53

54
    public void swap(int[] arr, int m, int n) {
55
        int temp = arr[m];
56
        arr[m] = arr[n];
57
        arr[n] = temp;
58
    }
59
}
 
 
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例

 
 

js判断数组中是否存在重复值

//检测是否有重复值         functionisRepeat(arr){            varisRepeat=false;     查看详情

javascript判断数组是否有重复值

实习中遇到要处理一个table首列是否有重复值,试过几个方法都不理想下面这个方法我感觉很好用varary=newArray("123","56","345","111","56");functionisRepeat(arr)//不重复FALSE重复true{varhash={};for(variinarr){if(hash[arr[i]]){returntrue;}//不存在该元素,... 查看详情

排序练习题:重复值判断

请设计一个高效算法,判断数组中是否有重复值。必须保证额外空间复杂度为O(1)。给定一个int数组A及它的大小n,请返回它是否有重复值。测试样例:[1,2,3,4,5,5,6],7返回:truepublicclassChecker{publicbooleancheckDuplicate(int[]a,intn){if(a==null||... 查看详情

js判断一个数组中是否有重复值的三种方法

方法一: vars=ary.join(",")+",";for(vari=0;i<ary.length;i++){if(s.replace(ary[i]+",","").indexOf(ary[i]+",")>-1){alert("数组中有重复元素:"+ary[i]);break;}}方法二: varary=newArray("111","22","33","111 查看详情

js判断数组是否有重复值

老的方法可以通过循环解决,网上很多,这里说一个利用es6新增数据类型Set实现的方式vararr=[1,2,3,4,5,2,3];if((newSet(arr)).length!=arr.length){alert("数组有重复值")}具体Set的用法可以参考阮一峰大神的es6文档。传送门Set  查看详情

判断数组值是否有重复

for(intt=0;t<serviceTag.Length;t++)//21212for(intj=t+1;j<serviceTag.Length;j++)//21212if(serviceTag[t]==serviceTag[j])for(inti=1;i<=Quantity;i++)TempData[i.ToString()]=Request[i.ToString( 查看详情

常见算法

判断一个单词是否是回文?varstr="mamam";functioncheck(str){returnstr==str.split(‘‘).reverse().join(‘‘);}check(str)//true去掉一组整型数组重复的值利用一个空对象和空数组,遍历数组元素,每次判断对象中是否存在这个值,如果不存在,将ob... 查看详情

第2章排序|第14节重复值判断练习题(代码片段)

题目请设计一个高效算法,判断数组中是否有重复值。必须保证额外空间复杂度为O(1)。给定一个int数组A及它的大小n,请返回它是否有重复值。测试样例:[1,2,3,4,5,5,6],7返回:true解析classCheckerpublic:boolcheckDuplicate(vector<int>a,int... 查看详情

判断两个数组中是否有重复项

两个数组判断是否有重复项$.each(arr1,function(i,value){   val=value;   num1=i;//用来标记当前arr1数组中的重复项   $.each(arr2,function(i,value){      &n 查看详情

判断一个数组是不是至少有一个重复项的最快算法

】判断一个数组是不是至少有一个重复项的最快算法【英文标题】:Fastestalgorithmtofigureoutifanarrayhasatleastoneduplicate判断一个数组是否至少有一个重复项的最快算法【发布时间】:2016-10-1413:44:34【问题描述】:我这里有一个非常特... 查看详情

判断数组中是否有重复的数据(代码片段)

 publicboolIsRepeat(string[]yourValue)Hashtableht=newHashtable();for(inti=0;i<yourValue.Length-1;i++)if(ht.Contains(yourValue[i]))returntrue;elseht.Add(yourValue[i],yourValue[i]);return 查看详情

c#判断页面中的多个文本框输入值是否有重复的实现方法

List<string>list=newList<string>();//首先定义一个泛型数组//这里假如说有四个文本框stringmainseat=this.textBox1.Text;stringnextseat=this.textBox2.Text;stringstoreseat1=this.textBox3.Text;stringstoreseat2=this.te 查看详情

在 Javascript 中,如何检查数组是不是有重复值?

】在Javascript中,如何检查数组是不是有重复值?【英文标题】:InJavascript,howdoIcheckifanarrayhasduplicatevalues?在Javascript中,如何检查数组是否有重复值?【发布时间】:2011-11-1415:37:38【问题描述】:可能重复:Easiestwaytofindduplicatevalue... 查看详情

是否有复制存储在二维数组中的相邻像素值的算法?

】是否有复制存储在二维数组中的相邻像素值的算法?【英文标题】:Isthereanalgorithmforcopyingneighboringpixelvaluesstoredina2D-Array?【发布时间】:2021-03-1909:37:17【问题描述】:我有一个灰度像素值的二维数组,看起来像2552502502502352512552... 查看详情

java判断一个数组中是不是有重复的元素

使用一个临时list,借助list.contains判断当前数组的值是否存在于list中,如果不存在则加入到list中,如果存在则记录出来。有点像把一个篮子中的桌球放到另一个空篮子中,如果篮子里面已经有的就不要再放进去了,没有的,一... 查看详情

判断数组是不是有重复,数组去重的简单方法

参考技术A1.判断数组是否有重复,并返回重复的indexindexOf是从前向后查询的index,lastIndexOf是从后向前查询的index,但是二者返回索引都是从前开始数数和计算的。当有重复的时候两个值会不相等。2.es6判断数组是否重复,不需要i... 查看详情

数组---存在重复元素(代码片段)

给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回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]... 查看详情

c语言数组判断是不是有重复元素?

...32469267/article/details/84192860有大神帮忙解释一下,他是怎么判断的,num不用赋值的吗这是方法定义,num是参数,在调用方法的时候会传值的,参数值不是在方法里定义的。在原文中找到的方法调用这个方法有4个参数,第一个参数... 查看详情