标签:arr num cur temp int 查找 用位 数次 public
上代码:package com.alg.exclusive; public class classify { public static void main(String[] args) { // 找出数组中其中只出现奇数次的数 int[] arr = {1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8}; System.out.println(classify(arr)); // 找出有两个只出现奇数次的不同数 int[] arr1 = {1, 1, 2, 2, 200, 300, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 8, 7, 8, 9, 9, 0, 0}; int[] arr2 = classifyNums(arr1); for (int cur : arr2) { System.out.println(cur); } } public static int classify(int[] arr) { int num = 0; for (int cur : arr) { num ^= cur; } return num; } public static int[] classifyNums(int[] arr) { int temp = 0; for (int cur : arr) { temp ^= cur; } // 得到右边的位为1的数,其他位均为0 ~temp+1此处为补码 int rightOne = temp & (~temp + 1); int[] num = new int[2]; for (int cur : arr) { if ((rightOne & cur) == 0) { num[0] ^= cur; } } num[1] = num[0] ^ temp; return num; } }
标签:arr,num,cur,temp,int,查找,用位,数次,public 来源: https://www.cnblogs.com/lhr123/p/16513007.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。