算法

算法 / 2023-08-20

LinkedList 作为队列使用add(E):添加元素到队列尾部peek():查看队列头部元素,不改变队列结构同方法 element() 的区别为:当头部元素为 null 时,element() 方法会抛 NoSuchElementException 异常,peek() 方法返回 nullpoll

算法 / 2023-08-09

public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public ArrayList<ListNode> Rever

算法 / 2023-08-08

public class QuickSort {public static void quickSort(int[] arr,int low,int high){int i,j,temp,t;if(low>high){return;}i=low;j=high;//temp就是基准位temp =

算法 / 2023-08-02

使用归并排序解决小和问题和逆序对问题,需要注意:我们合并两个子数组时需要一个辅助数组,当两个子数组的指针指向的数相等时,一定要明确进入辅助数组的顺序。根据不同的情况,有可能是左子数组的元素先进,也有可能是右数组的元素先进。总之,不能漏检

算法 / 2023-08-02

对于一个数组:int[] arr = { 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4};如果我们想要找3的任意位置,那二分法直到找到3,马上停止即可。如果我们要找到最左侧3的位置,那二分法要二分到最后leftIndex = rightIndex才能停止。

算法 / 2023-08-02

1、如果出现奇数次的数只有一个:将数组中所有的数从头到尾异或一遍即可;2、如果出现奇数次的数有两个:数组中所有的数从头到尾异或一遍,得到结果eor。找到eor二进制表示中为1的最右侧位置。这里假设是第三位。再遍历数组一遍,与4(0b100)与运算,结果为1的数互相异或,结果为0的数互相异或。最终分别

算法 / 2023-08-02

int a = 甲;int b = 乙;a = a ^ b; ( a = 甲 ^ 乙)b = a ^ b; ( b = 甲 ^ 乙 ^ 乙 = 甲)a = a ^ b; ( a = 甲 ^ 乙 ^ 甲 = 乙)