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

  • 相关阅读:
    【JAVA实例】for循环实现猜数字游戏
    【python基础】常见模块:openpyxl & socket & requests
    【python实例】飞机大战
    【python实例】文件操作实例
    【python基础】单例模式 & 工厂模式 & 策略模式 & 观察者模式
    【python基础】os模块(库)方法汇总
    【python基础】文件读取
    【深度学习】paddlepaddle——基于多层神经网络的图像识别案例
    斑马斑马-15-微信小程序-基础语法
    斑马斑马-11-微信小程序-布局谋篇
  • 原文地址:https://www.cnblogs.com/erlou96/p/14128538.html
Copyright © 2020-2023  润新知