第一个sum就不写了, 第二个: int x = 0; for (int i = 0; i < array.length; i++) { x ^= array[i]; } System.out.println(x);
一样处理,float也是32bits依样葫芦将每个bit放到对应的int的bit上去,当作int处理。double->long float[] array = new float[] { 11.23f, 11.23f, 33.555f, 33.555f, -55.01f, -55.01f, 99.999f, 99.999f, 99.999f, 99.999f, -1.9876f }; int x = 0; for (int i = 0; i < array.length; i++) { int y = Float.floatToIntBits(array[i]); x ^= y; } float result = Float.intBitsToFloat(x); System.out.println(result);
package CSDN;/** * 有一组数字,从1到n,中减少了一个数,顺序也被打乱,放在一个n-1的数组里,请找出丢失的数字。 * * @author xqh * */ public class FindLostDigital { public static void main(String[] args) { int[] arr = { 1, 9, 8, 6, 3, 2, 5, 7 }; System.out.println("丢失的数为:" + find(arr, arr.length + 1)); } /** * 求和相减 * * @param arr * 数组 * @param n * 数组原来的长度 * @return 丢失的数 */ private static int find(int[] arr, int n) { int sum = n * (n + 1) >> 1; // 1到n的和 for (int i = 0; i < arr.length; i++) sum -= arr[i]; // sum - 数组所有元素之和 return sum; // 返回数组丢失的数 }}
//nums 中表示的为 1 - nums.length + 1 中减少了一个数 public static int method1(int[] nums){ int result = 0; for(int i = 0; i < nums.length; i++){ result ^= i + 1; result ^= nums[i]; } return result^nums.length + 1; }
//nums 中只有一个数的个数为奇数,其他偶数 public static int method2(int[] nums){ int result = 0; for (int i = 0; i < nums.length; i++) { result ^= nums[i]; } return result; }
2. HashMap
2.线性时间常数空间 不懂
坐等答案
2.for(int i=0;i<len;i++)if(data[i]%2==1)就是答案
for(int i=0;i<a.length;i++)
n_sum-=a[i];
return n_sum;
第二题:int n=a[0];
for(int i=1;i<a.length;i++)
n^=a[i];
return n;
第二个:
int x = 0;
for (int i = 0; i < array.length; i++) {
x ^= array[i];
}
System.out.println(x);
float[] array = new float[] {
11.23f, 11.23f, 33.555f, 33.555f, -55.01f, -55.01f, 99.999f, 99.999f, 99.999f, 99.999f, -1.9876f
};
int x = 0;
for (int i = 0; i < array.length; i++) {
int y = Float.floatToIntBits(array[i]);
x ^= y;
}
float result = Float.intBitsToFloat(x);
System.out.println(result);
package CSDN;/**
* 有一组数字,从1到n,中减少了一个数,顺序也被打乱,放在一个n-1的数组里,请找出丢失的数字。
*
* @author xqh
*
*/
public class FindLostDigital {
public static void main(String[] args) {
int[] arr = { 1, 9, 8, 6, 3, 2, 5, 7 };
System.out.println("丢失的数为:" + find(arr, arr.length + 1));
} /**
* 求和相减
*
* @param arr
* 数组
* @param n
* 数组原来的长度
* @return 丢失的数
*/
private static int find(int[] arr, int n) {
int sum = n * (n + 1) >> 1; // 1到n的和
for (int i = 0; i < arr.length; i++)
sum -= arr[i]; // sum - 数组所有元素之和
return sum; // 返回数组丢失的数
}}
//nums 中表示的为 1 - nums.length + 1 中减少了一个数
public static int method1(int[] nums){
int result = 0;
for(int i = 0; i < nums.length; i++){
result ^= i + 1;
result ^= nums[i];
}
return result^nums.length + 1;
}
//nums 中只有一个数的个数为奇数,其他偶数
public static int method2(int[] nums){
int result = 0;
for (int i = 0; i < nums.length; i++) {
result ^= nums[i];
}
return result;
}
请问是什么意思?
然后根据b中元素来判断
这种方法在java的枚举类型的实现中也用到了。