辗转相除法
求最大公约数
int gcd(int a,int b){
return b == 0? a:gcd(b,a%b);
}
Hashset
不允许有重复元素的集合。允许有null,无顺序,元素是对象
import java.util.HashSet; // 引入 HashSet 类 HashSet<String> sites = new HashSet<String>();//语法格式,初始化,定义
添加元素— sites.add("Google"); 判断元素是否存在—sites.contains("Taobao") 删除单个元素—sites.remove("Taobao");、 删除所有元素— sites.clear(); 计算元素数量—sites.size() 迭代元素— for (String i : sites) { System.out.println(i); }
Arraylist
是一个可以动态修改的数组,ArrayList 是一个数组队列,没有固定大小和限制,可以添加和删除元素
import java.util.ArrayList; // 引入 ArrayList 类 ArrayList<E> ObjectName = new ArrayList<>(); E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。
添加元素— sites.add("Taobao"); 访问获取元素—sites.get(1) 修改元素—sites.set(2,"wike"); 删除元素—sites.remove(3); 计算大小—sites.size(); 迭代数组列表 for(int i = 0;i <sites.size();i++){ System.out.println(sites.get(i)); } for(String i : sites){ Ststem.out.println(i); } 排序,按照先后大小顺序 Collections.sort(sites); v
判断奇偶数
x&1 == 1为奇 ,== 0 为偶数
位运算符
1,唯一成对数题目
import java.util.Random;
public class _01唯一成对的数 {
public static void main(String[] args) {
int N = 1001;
int[] arr = new int[N];
for (int i = 0; i < arr.length - 1; i++) {
arr[i] = i + 1;
}
//最后一个数,是随机数
arr[arr.length - 1] = new Random().nextInt(N - 1) + 1;
//随机下标
int index = new Random().nextInt(N);
Util.swap(arr, index, arr.length - 1);
Util.print(arr);
int x1 = 0;
for (int i = 1; i <= N - 1; i++) {
x1 = (x1 ^ i);
}
for (int i = 0; i < N; i++) {
x1 = x1 ^ arr[i];
}
System.out.println(x1);
System.out.println("==========");
int[] helper = new int[N];
for (int i = 0; i < N; i++) {
helper[arr[i]]++;
}
for (int i = 0; i < N; i++) {
if (helper[i] == 2) {
System.out.println(i);
break;
}
}
}
}
异或 交换律 0^n=n n^n=0
2,找出落单的那个数
a = arr[0]; for(int i = 1;i < n;i++){ a ^= arr[i]; } System.out.println(a);