最长连续不重复子序列
public class 最长连续不重复子序列 { public static void main(String[] args) { Scanner sc =new Scanner(System.in); int N = sc.nextInt(); int[] str1 = new int[100010]; int[] str2 = new int[100010]; for (int i=0;i<N;i++){ str1[i]=sc.nextInt(); } int res = 0; for(int i=0,j=0;i<N;i++){ str2[str1[i]]+=1; while(str2[str1[i]]>1){ str2[str1[j]]--; j++; } res = Math.max(res,i-j+1); } System.out.println(res); } }
区间合并
public class 区间合并 { public static void merge(int[][] str){ if(str.length==0){ System.out.println(0); } int st = str[0][0]; int ed = str[0][1]; int n = 1; for(int i=1;i<str.length;i++){ if(ed<str[i][0]){ st = str[i][0]; ed = str[i][1]; n++; }else{ ed = Math.max(ed,str[i][1]); } } System.out.println(n); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] str = new int[n][2]; for(int i=0;i<n;i++){ str[i][0]=sc.nextInt(); str[i][1]=sc.nextInt(); } Arrays.sort(str, new Comparator<int[]>() { // 匿名内部类 @Override public int compare(int[] e1, int[] e2) { // 如果第一列元素相等,则比较第二列元素 if (e1[0]==e2[0]) return e1[1]-e2[1]; // e1[1]-e2[1]表示对于第二列元素进行升序排序 return e1[0]-e2[0]; // e1[0]-e2[0]表示对于第一列元素进行升序排序 } }); merge(str); } }
位运算
public class 位运算 { public static void main(String[] args) { int n = 100; for (int k=7;k>=0;k--) System.out.print(n >> k & 1); } }
求二进制中一的个数
public class 求二进制中一的个数 { public static int lowbit(int x){ return x & -x; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int x = sc.nextInt(); int res = 0; while (x!=0) { x-=lowbit(x); res++; } System.out.println(res); } }