找出长度为n的数组中重复的数字(数字范围在0~n-1)

分析:对这个数组进行排序,若没有重复的数字的话数组i位置的值为i。依照这个思路,可以遍历该数组:首先判断数组i位置的值m是否等于i,若相等则判断下一位置对应的数字;若不相等,则判断m是否与位置m处对应的值是否相等。若相等,则说明位置i处的值与位置m处的值相等,m即为数组中的一个重复数字,返回该值即可;若不相等,则将m放到位置m处(即将i位置的数字与m位置的数字交换),从数组位置i处继续判断,直至结束。

代码如下:


/**
 *   功能描述:找出长度为n的数组中重复的数字(数字范围在0~n-1) 
 * @author  liuhao 
 * 
 * @date 2018年8月20日 上午9:19:14 
 * @version 1.0 
 * @parameter  
 * @since  
 * @return  
 */
public class Duplicate {

	public static int ans = -1;

	public static void main(String[] args) {
//		int[] nums = { 2,3,1,0,2,5,3};
		int[] nums = { 1,2,4,3,1};
		System.out.println(findDuplicate(nums));
		if (findDuplicate(nums)) {
			System.out.println(ans);
		}
	}

	public static boolean findDuplicate(int[] nums) {
		if (nums == null || nums.length <= 0) {
			return false;
		}
		for (int i =
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值