Java--找只出现一次的数字

1、问题
有一组数据,只有一个数字是出现一次,其他是两次,请找出这个数字。
2、分析:找出只出现一次的数字
有一组数据,只有一个数字是出现一次,其他是两次,请找出这个数字。
比如说 1 3 2 4 2 1 4 只出现一次的数字就是3
分析过程:
(1) 先调用Arrays.sort()方法进行排序,它是进行升序排序的 1 1 2 2 3 4 4
(2) for循环遍历这个数组,让i从第二个元素开始,与左右两边都进行比较,如果左右两边的数字都与i不一样,
(3)那么这个i就是要找的出现一次的数字,在方法中返回这个数字
3、代码演示

package demomethod03;

import java.util.Arrays;

/**
 * 找出只出现一次的数字
 * 有一组数据,只有一个数字是出现一次,其他是两次,请找出这个数字。
 *    比如说  1 3 2 4 2 1 4     只出现一次的数字就是3
 *     分析过程:
 *          先调用Arrays.sort()方法进行排序,它是进行升序排序的     1 1 2 2 3 4 4
 *          for循环遍历这个数组,让i从第二个元素开始,与左右两边都进行比较,如果左右两边的数字都与i不一样,
 *          那么这个i就是要找的出现一次的数字
 *      1、先创建一个数组来保存这组数据
 *      2、调用方法返回这个要找的数字
 *  方法三要素:
 *  返回值类型:int
 *  方法名: findNum
 *  参数列表:int[] nums   数组
 */
public class FindOneNum {
    public static void main(String[] args) {
        int[] nums = new int[]{1, 3, 2, 4, 2, 1, 4};
        int ret = findNum(nums);
       // int ret=findNum1(nums);
        System.out.println("只出现一次的数字为" + ret);
    }
    public static int findNum1(int[] nums){
        //用异或的方式,一个数字与0异或为自己本身,一个元素与自身异或结果为0,剩下的数字就是只出现一次的
        int ret=0;
        for(int i=0;i<nums.length;i++){
            ret^=nums[i];
        }
        return ret;
    }

    public static int findNum(int[] nums) {
        Arrays.sort(nums);
        int onenum=0;
        if(nums[0]!=nums[1]){
            return nums[0];
        }
        if(nums[nums.length-1]!=nums[nums.length-2]){
            return nums[nums.length-1];
        }
        for(int i=1;i<nums.length-2;i++){
            if((nums[i]!=nums[i-1])&&(nums[i]!=nums[i+1])){
                onenum= nums[i];
            }
        }
        return onenum;
    }
}

3、运行结果
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值