parent
							
								
									7d8d1596e3
								
							
						
					
					
						commit
						81d0b068d6
					
				| @ -0,0 +1,20 @@ | ||||
| --- | ||||
| HashMap | ||||
| --- | ||||
| 
 | ||||
| #### 目录 | ||||
| 
 | ||||
| 1. 思维导图 | ||||
| 2. 概述 | ||||
| 3. 源码分析 | ||||
| 4. 常见问题 | ||||
| 5. 参考 | ||||
| 
 | ||||
| #### 思维导图 | ||||
| 
 | ||||
| #### 概述 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #### 源码分析 | ||||
| 
 | ||||
| @ -0,0 +1,127 @@ | ||||
| --- | ||||
| 异或应用 | ||||
| --- | ||||
| 
 | ||||
| #### 目录 | ||||
| 
 | ||||
| 1. 思维导图 | ||||
| 2. 概述 | ||||
| 3. 常见问题解决 | ||||
| 4. 参考 | ||||
| 
 | ||||
| #### 思维导图 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| #### 概述 | ||||
| 
 | ||||
| 异或运算就是相同的元素运算结果等于 0,不相同的元素异或等于 1。 | ||||
| 
 | ||||
| 基于此,异或有以下特性: | ||||
| 
 | ||||
| 1. a^a = 0 | ||||
| 
 | ||||
|    相同的数异或为零。 | ||||
| 
 | ||||
| 2. a^0 = a | ||||
| 
 | ||||
|    任何数与零异都为其本身。 | ||||
| 
 | ||||
| 3. a = a ^ b ^ b | ||||
| 
 | ||||
| #### 常见问题 | ||||
| 
 | ||||
| ##### 1. 不用中间变量交换 a 和 b | ||||
| 
 | ||||
| ```java | ||||
|     public static void main(String[] args) { | ||||
|         int a = 2333; | ||||
|         int b = 1234; | ||||
|         a = a ^ b; | ||||
|         b = a ^ b; | ||||
|         a = a ^ b; | ||||
|         System.out.println(a + " " + b); | ||||
|     } | ||||
| ``` | ||||
| 
 | ||||
| ##### 2. 一个整形数组,存 1 到 n 的所有整数,但缺少一个数,求这个数? | ||||
| 
 | ||||
| ```java | ||||
|     public static void main(String[] args) { | ||||
|         int[] ints = new int[233]; | ||||
|         for (int i = 0; i < 233; i++) { | ||||
|             ints[i] = i; | ||||
|         } | ||||
|         ints[23] = 0; | ||||
|         int result = 0; | ||||
|         for (int i = 0; i < ints.length; i++) { | ||||
|             result = i ^ result; | ||||
|         } | ||||
|         for (int i : ints) { | ||||
|             result = i ^ result; | ||||
|         } | ||||
|         System.out.println(result); | ||||
|     } | ||||
| ``` | ||||
| 
 | ||||
| ##### 3. 一个整形数组除了一个数只出现一次,其他都出现两次,求这个数? | ||||
| 
 | ||||
| ```java | ||||
|     public static void main(String[] args) { | ||||
|         int[] ints = new int[]{2, 3, 4, 5, 3, 4, 5, 7, 2, 9, 0, 7, 0}; | ||||
|         int result = 0; | ||||
|         for (int i : ints) { | ||||
|             result = result ^ i; | ||||
|         } | ||||
|         System.out.println(result); | ||||
|     } | ||||
| ``` | ||||
| 
 | ||||
| ##### 4. 一个整形数组除了两个数只出现一次,其他都出现两次,求这两个数? | ||||
| 
 | ||||
| ```java | ||||
|     public static void main(String[] args) { | ||||
|         int[] ints = new int[]{2, 5, 2, 9, 7, 5, 6, 9}; | ||||
|         int num = 0; | ||||
|         for (int i : ints) { | ||||
|             num = num ^ i; | ||||
|         } | ||||
|         ArrayList<Integer> list = new ArrayList<>(); | ||||
|         for (int i : ints) { | ||||
|             if (list.contains(num ^ i)) { | ||||
|                 list.remove(Integer.valueOf(num ^ i)); | ||||
|             } else { | ||||
|                 list.add(num ^ i); | ||||
|             } | ||||
|         } | ||||
|         System.out.println(list.get(0)); | ||||
|         System.out.println(list.get(1)); | ||||
|     } | ||||
| ``` | ||||
| 
 | ||||
| ##### 5. 一个整形数组除了三个数只出现一次,其他都出现两次,求这三个数? | ||||
| 
 | ||||
| ```java | ||||
| public static void main(String[] args) { | ||||
|     int[] ints = new int[]{2, 5, 2, 9, 7, 5, 6, 9, 8}; | ||||
|     int num = 0; | ||||
|     for (int i : ints) { | ||||
|         num = num ^ i; | ||||
|     } | ||||
|     ArrayList<Integer> list = new ArrayList<>(); | ||||
|     for (int i : ints) { | ||||
|         if (list.contains(num ^ i)) { | ||||
|             list.remove(Integer.valueOf(num ^ i)); | ||||
|         } else { | ||||
|             list.add(num ^ i); | ||||
|         } | ||||
|     } | ||||
|     System.out.println(list.get(0) ^ num); | ||||
|     System.out.println(list.get(1) ^ num); | ||||
|     System.out.println(list.get(2) ^ num); | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| #### 参考 | ||||
| 
 | ||||
| [异或应用小总结](https://blog.csdn.net/hulamua/article/details/52411446) | ||||
| @ -0,0 +1,16 @@ | ||||
| --- | ||||
| 观察者模式 | ||||
| --- | ||||
| 
 | ||||
| #### 目录 | ||||
| 
 | ||||
| 1. 思维导图 | ||||
| 2. 概述 | ||||
| 3.  | ||||
| 
 | ||||
| #### 思维导图 | ||||
| 
 | ||||
| #### 概述 | ||||
| 
 | ||||
| 观察者模式定义了对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖它的对象都会得到通知并自动更新。它的最重要作用就是解耦,将被观察者和观察者解耦,使得它们之间的依赖性更小。 | ||||
| 
 | ||||
| After Width: | Height: | Size: 65 KiB | 
					Loading…
					
					
				
		Reference in new issue