【LeetCode 手撕算法】(细节知识点总结)

发布时间:2026/7/10 22:57:39
【LeetCode 手撕算法】(细节知识点总结) 一、Array类List类1、排序Arrays.sort(nums); Array要加s2、ArrayListInteger maxlist new ArrayList(); ArrayList里面两个大写3、数组固定不变用 .lengthArrayList可变用 .size()4、ArrayList 访问下标用 .get(i) ,数组才可以直接arr[i]5、Math.min() 和 Math.max() 可以直接求两数值int、long、float或double的较大较小值6、添加: 将元素以List形式存进res列表res.add(7、Arrays.equals(hashS,hashP) 比较两hash串是否相等用于判断是否为异位词比较地址内容用 a.equals(b) 比较数组内容用Arrays.equals(a,b)8、Arrays.fill(ans,1); 将ans全部设置为1Arrays不忘s二、返回值类1、return new int [ ] { l,r} 为新建一个int数列值为lr 结果为 [ l ,r ]2、return new int [ 0 ] 指返回长度为0的int数列。不能直接返回 null否则会出现 NullPointerException错误三、定义类1、int i0,j0; 需要分开定义不能是int i,j0;2、开头为void则不需要返回值3、如果定义为 int [ ] nums则直接返回 return nums;4、ListListInteger res new ArrayList()存多组结果的二维表 例[[1,2], [3,4,5]]5、SetCharacter winnew HashSet() 定义集合类6、int minpriceInteger.MAX_VALUE;//默认最大值正无穷四、string类char类1、char[]ch s.toCharArray(); //把string变成char2、win.contains(xxx) 判断win里是否包含xxx拼写别忘了s3、String类型用.length()算长度数组用.length集合用 .size4、获取元素用charAt( ) , 截取用substring( i, j )五、数组类1、注意二维数组排序写法格式 intervals,(arr1,arr2)-arr1[0]-arr2[0]2、 ans.add ( new int [ ] { left,right } 意思新建含left,right的数组动态存入ans六、链表类1、比较两节点是否相等用per.val 和slow.val2、新建ListNode类集合Set ListNode visitednew HashSetListNode()3、set . add(xxx)为true即集合未出现过添加的同时返回true为false即出现过。4、遍历类的要用其他节点来接头节点头节点保持不动 方便之后再使用5、二维链表操作.get() .add() 、.get() .get()七、队列类BFS广度优先使用、是否有环1、Queueint[] queue new LinkedList();2、get.(x).add(y)根据x层存y数据3、queue.offer(1) 入队--加入队尾4、queue.poll() 出队--去掉队头5、queue.peek() 看队头6、queue.size() 队列元素个数7、queue.isEmpty() 判断是否为空八、操作汇总数组用 .length 字符串用 .length() 集合用size.() ;添加 List用add( ) , StringBuilder用append.( ) 删除 List用remove( ) , StringBuilder用deleteCharAt.( ) 要求Olog n查找用二分查找左右指针求mid九、栈自动装箱Integer有可能为null可以存进栈里取出来时如果用int来接会报错int不能为null