总结算法题中一些常用的Java方法
String相关的
1. charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。
string.charAt(i); // i为索引, 索引范围为 0 到 length() - 1
2. length() 方法用于返回字符串的长度。空字符串的长度返回 0。
string.length();
3.将String字符串转化成char数组
char[] chars = string.toCharArray();
4. char数组转String
new String (charArray); // charArray => char[] charArray
栈相关
1.初始化
Stack<?> stack = new Stack();
2.测试堆栈是否为空
boolean isEmpty()
3.查看堆栈顶部的对象,但不从堆栈中移除它
Object peek()
4.移除堆栈顶部的对象,并作为此函数的值返回该对象
Object pop()
5.项压入堆栈顶部
Object push(Object element)
6.返回对象在堆栈中的位置,以 1 为基数
int search(Object element)
数组相关
1. 数组的长度
array.length
2. 数组的排序
Arrays.sort(array);
3. 二维int类型数组的排序按首个数字升序排序
Arrays.sort(array, (v1, v2) -> v1[0] - v2[0]);
// 当区间左端点相同的时候,按照右端点降序排序
Arrays.sort(intervals, (o1, o2) -> { if (o1[0] == o2[0]) { return o2[1] - o1[1]; } return o1[0] - o2[0]; });
4. 用于一维数组、二维数组的初始化或者填充 (例: 将数组array的数据填充为1)
Arrays.fill(array, 1);
5. 复制新数组,并指定长度 (例: 将数组array复制一个新数组, 并指定长度为11)
Arrays.copyOf(array, 11);
List相关
列表的尾部插入指定元素
list.add(Object o);
列表的尾部移除元素(一般用于dfs算法 进行回溯)
list.remove(list.size() - 1);
判断集合中是否存在这个元素
list.contains(Object o); // 返回true 或 false
集合的拷贝
使用List实现类的构造方法
List<Integer> destList = new ArrayList<Intger>(srcList);
将数组转为list
List<String> names = Arrays.asList(new String[]{"zhangsan","li"});
集合排序
Collections.sort(list); // 返回值为void
注意: 一般dfs类型的算法, 集合类的用的比较多
// 一般常见的算法题中,需要对List<Integer> list进行排序,在判断是否存在于List<List<Integer>> res中 // 所以一般做法是:
// 如果满足条件
if(// 条件成立) {
List<Intger> tmp = new ArrayList(list);
Collections.sort(tmp);
if(!res.contains(tmp)) { // 判断结果集是否重复
res.add(tmp);
}else {
return;
}
}
// 筛选候选节点
list.add(o);
dfs(...);
list.remove(list.size() - 1);
queue相关
这类主要是BFS算法使用较多:
初始化
Queue<Integer> queue = new LinkedList();
添加元素
queue.offer(Object o);
删除队列中的第一个元素
queue.poll(Object o); // 返回队列的第一个元素
判断是否为空
queue.isEmpty();
获取队列的大小
queue.size();
Map相关
获取指定键的值
map.get(Object o);
添加一个映射
put(K key, V value)
Map是否包含指定的key使用containsKey方法
containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true
Map判断是否包含指定的value使用containsValue方法
containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true
Map是否包含集合数据
isEmpty() 如果此映射未包含键-值映射关系,则返回 true
Map遍历
Map<String, Integer> map = new HashMap(); map.put("zhangsan",1); map.put("li",2); map.put("wangwu",2); for (Map.Entry<String, Integer> m: map.entrySet()) { System.out.println("姓名: "+m.getKey()+" 编号: "+m.getValue()); }
目前LeetCode算法题中,常用的一些JAVA的方法先总结到这! 后续不断更新!