在Java中找出1到n个数字之间的重复数

227 阅读2分钟

给出一个长度为n+1的列表,它的数值范围从1到n,其中一个数字是重复的,你必须找到重复的数字。这个问题非常类似于在数组中查找缺少的数字。在这篇文章中,我将分享一个java程序和算法,以找到1到n个数字之间的重复数字。

算法

1.计算列表中所有数字的总和。

2.计算列表中唯一数的大小n,并使用算术级数公式n*(n+1)/2

3.从第一步减去第二步中所得到的数值,你将得到重复的数字。

Java程序

import java.util.List;
import java.util.ArrayList;
public class DuplicateNumberProgram {
    public static void main(String args[]) {
        // Creating the list 
        List<Integer> numbers = new ArrayList<Integer>();
        // Add numbers from 1 to n
        for(int i=1; i < 40; i++) {
            numbers.add(i);
        }
        // adding duplicate number into the list
        numbers.add(35);
        DuplicateNumberProgram obj = new DuplicateNumberProgram();
        int duplicateNumber = obj.getDuplicateNumber(numbers);
        System.out.println(duplicateNumber);
    }
    
    public int findSum(List<Integer> numbers) {
        int sum =0;
        for(int number : numbers) {
            sum += number;
        }
        return sum;
    }
    
    public int getDuplicateNumber(List<Integer> numbers) {
        int n = numbers.size()-1;
        int total = findSum(numbers);
        int duplicateNum = total - (n * (n+1)/2);
        return duplicateNum;
    }
}

产出:

35

这就是今天的全部内容,请在评论中提到,如果您有任何问题,请查找Java中1到n个数字之间的重复编号。

下面是博主剪辑的视频资料 可能与文章无关 希望大家可以支持一下哦!谢谢大家支持!

UP主:我只需一小时带你玩转Git&Github B友直呼:菜鸡这不是有手就行?

【面试必备】阿里资深架构师详解 2021最新 Java秒杀系统高性能高并发实战项目

Java零基础小白看完我这个系列视频都可以自己做实战项目啦!拿捏呢!

2021最新版lntellij IDEA 安装、配置、环境变量教学

2021最新算法训练营:左神带你 爆刷LeetCode算法(1000题) 进大厂的必修算法课程!

B站首发 花费12980巨资购买的 微服务SpringCloud Alibaba全集