Java算法题常用底层核心方法
整理LeetCode、剑指Offer 高频必用的底层API、数据结构常用方法、通用套路,直接背下来就能套题。
一、字符串 String 常用(必考)
// 1. 取字符
char charAt(int index)
// 2. 截取子串
String substring(int begin, int end)
// 3. 长度
int length()
// 4. 判空
isEmpty()
// 5. 相等比对(不要用==)
equals()
// 6. 转字符数组(算法最常用)
char[] toCharArray()
// 7. 大小写转换
toLowerCase() / toUpperCase()
// 8. 查找字符位置
indexOf() / lastIndexOf()
// 9. 分割字符串
String[] split(“分隔符”)
二、数组 Arrays 工具类(刷题神器)
// 1. 数组排序
Arrays.sort(数组)
// 2. 数组转字符串,打印看结果
Arrays.toString(数组)
// 3. 数组拷贝
Arrays.copyOf(原数组, 新长度)
Arrays.copyOfRange(原数组, 起始, 结束)
// 4. 填充数组
Arrays.fill(数组, 值)
// 5. 二分查找(有序数组)
Arrays.binarySearch()
三、ArrayList 动态数组
add() // 尾部添加
get(index) // 按索引取
set(index,val)// 修改
remove(index)// 删除
size() // 元素个数
isEmpty() // 是否为空
clear() // 清空
四、HashMap 哈希表(两数之和、统计频次必用)
put(key,value) // 存值
get(key) // 取值
getOrDefault(key,默认值) // 没有key返回默认,超常用
containsKey(key) // 判断key是否存在
containsValue(value)
keySet() // 遍历所有key
entrySet() // 键值对遍历
size() / isEmpty()
五、LinkedList 链表 / 队列 / 栈
当作队列 Queue(先进先出)
offer() // 入队
poll() // 出队,返回队首
peek() // 查看队首不删除
当作栈 Stack(后进先出)
push() // 入栈
pop() // 出栈
peek() // 看栈顶
六、数学类 Math(贪心、数字处理)
Math.max(a,b) // 最大值
Math.min(a,b) // 最小值
Math.abs(x) // 绝对值
Math.sqrt(x) // 开平方
Math.pow(a,b) // 幂运算
Math.floor()/ceil() // 向下/向上取整
七、字符 Character 常用
Character.isDigit© // 是否数字
Character.isLetter© // 是否字母
Character.toLowerCase© // 转小写
八、算法通用底层套路(比API更重要)
-
双指针:左右指针、快慢指针(数组、链表、字符串万能)
-
二分查找:有序数组必用,模板固定 while(left <= right)
-
哈希表:查重、统计次数、映射关系
-
滑动窗口:子数组、子串求和/最长最短问题
-
递归/DFS:二叉树、组合、子集、路径问题
-
BFS:层序遍历、最短路径、迷宫
-
动态规划DP:一维/二维数组存中间结果
九、刷题必背极简模板
-
字符串先转 toCharArray() 好遍历
-
数组先 Arrays.sort() 再双指针
-
查找、两数关系直接上 HashMap
-
层级、最短路径直接 Queue BFS
-
二叉树优先递归 DFS
更多推荐
所有评论(0)