package Maths;import java.util.Scanner;/** Find the 2 elements which are non repeating in an array* Reason to use bitwise operator: It makes our program faster as we are operating on bits and not on* actual numbers.*/public class NonRepeatingElement {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int i, res = 0;System.out.println("Enter the number of elements in the array");int n = sc.nextInt();if((n & 1) == 1){//Not allowing odd number of elements as we are expecting 2 non repeating numbersSystem.out.println("Array should contain even number of elements");return;}int arr[] = new int[n];System.out.println("Enter "+n+" elements in the array. NOTE: Only 2 elements should not repeat");for(i = 0; i <n;i++){arr[i] = sc.nextInt();}try{sc.close();}catch(Exception e){System.out.println("Unable to close scanner"+e);}//Find XOR of the 2 non repeating elementsfor(i = 0 ; i < n; i++)res^=arr[i];//Finding the rightmost set bitres = res & (-res);int num1=0,num2=0;for(i = 0 ; i < n; i++){if((res & arr[i]) > 0)//Case 1 explained belownum1^=arr[i];elsenum2^=arr[i];//Case 2 explained below}System.out.println("The two non repeating elements are "+num1+" and "+num2);}/*Explanation of the code:let us assume we have an array [1,2,1,2,3,4]Property of XOR: num ^ num = 0.If we XOR all the elemnets of the array we will be left with 3 ^ 4 as 1 ^ 1 and 2 ^ 2 would give 0.Our task is to find num1 and num2 from the result of 3 ^ 4 = 7.We need to find two's complement of 7 and find the rightmost set bit. i.e. (num & (-num))Two's complement of 7 is 001 and hence res = 1.There can be 2 options when we Bitise AND this res with all the elements in our array1. Result will come non zero number2. Result will be 0.In the first case we will XOR our element with the first number (which is initially 0)In the second case we will XOR our element with the second number(which is initially 0)This is how we will get non repeating elements with the help of bitwise operators.*/}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。