• 算法练习笔记


    1. 有效的字母异位词  242题 

        其实这题思路上并没有问题,想到了两种方法。第一种是 HashMap ,第二种是用 Arrays.sort 排序。当然官方针对本地给出了更简单的解法,26个字母,放到数组的26个地方。

        最大的失误,就是根本没去想 是用 HashMap 更好,还是 Arrays.sort排序方法更好。只是知道怎么做,却不知道去想哪个更好一些?为什么好?

        HashMap方法的时间复杂度为 O(N),Arrays.sort方法的时间复杂度为 NlogN

        知识点:

        1)char - - > Character

        2)数字中找char 数字和 Integer对应关系,char值 - '0' 。例如:a 为 '9',    Integer aInt = '9' - '0';

        3)ASCII 值:A-Z 65-90,a-z 97-122。字母转换为int值可以直接用int强转:int aVal= (int)'a';  则 aVal值为97

        4)Arrays.sort 可以对数组进行排序,时间复杂度为logN。

        5)str.charAt(i)  第 i 个位置的的字符

    2. 环形链表  141题

        1)入参一定有地方判断是否为空。写完代码检查的时候,多注意

        2)同一个对象用“==”比较!

    3. 无重复字符的最长子串   3题

       1)获取最大值:maxVal = Math.max(v1, v2);

       2)相同类型字段初始值:int start = 0, maxLength = 0;

       3)map的key值中是否包含某个值:charMap.containsKey(keyVal)

    4. 用栈实现队列  232题

        1)for循环中,stack.size()的值是每次都会计算的。如果stack中的元素数量有变动,则for选好的终止条件也会变动。

        2)可以通过 stack.isEmpty()来判断元素是否为空,不用每次使用stack.size()>0

    图的广度和深度搜索有可能会有重复,所以一般用 一个 set保存搜索过的。

     
     
  • 相关阅读:
    QT QT程序初练
    Linux Shell编程三
    Linux Shell编程二
    git操作
    git push命令
    Zabbix全方位告警接入-电话/微信/短信都支持
    CentOS 7安装TigerVNC Server
    MySQL各版本的区别
    MariaDB Galera Cluster 部署
    MySQL高可用方案MHA的部署和原理
  • 原文地址:https://www.cnblogs.com/Jtianlin/p/11991957.html
Copyright © 2020-2023  润新知