总结算法题中一些常用的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的方法先总结到这! 后续不断更新!

 

posted @ 2020-12-13 14:10  彬在俊  阅读(461)  评论(0编辑  收藏  举报