Java 100道算法

数组相关

  1. 查找数组中的最大和最小元素
  2. 实现数组的反转
  3. 查找数组中的第二大元素
  4. 从数组中删除重复元素
  5. 合并两个有序数组
  6. 找到数组中和为指定值的两个数
  7. 实现一个动态数组(ArrayList)
  8. 找到数组中出现次数超过一半的元素
  9. 寻找数组的连续子数组和为定值
  10. 查找数组中的峰值元素

字符串相关

  1. 实现字符串的反转
  2. 判断一个字符串是否为回文
  3. 统计字符串中每个字符的出现次数
  4. 查找字符串中的第一个不重复字符
  5. 实现字符串的全排列
  6. 查找两个字符串的最长公共子串
  7. 判断两个字符串是否为异位词
  8. 实现字符串的匹配(KMP算法)
  9. 压缩字符串
  10. 计算两个字符串的编辑距离

链表相关

  1. 反转链表
  2. 查找链表的中间节点
  3. 删除链表中的重复节点
  4. 合并两个有序链表
  5. 检查链表是否有环
  6. 删除链表中的倒数第N个节点
  7. 在链表中找到环的入口点
  8. 对链表进行排序
  9. 合并K个有序链表
  10. 交换链表中的相邻节点

树相关

  1. 实现二叉树的前序遍历
  2. 实现二叉树的中序遍历
  3. 实现二叉树的后序遍历
  4. 实现二叉树的层序遍历
  5. 查找二叉树的最大深度
  6. 判断一棵树是否为二叉搜索树
  7. 查找二叉搜索树的最小值和最大值
  8. 查找二叉树的最近公共祖先
  9. 求二叉树的所有路径
  10. 将二叉搜索树转换为双向链表

排序和搜索

  1. 实现冒泡排序
  2. 实现选择排序
  3. 实现插入排序
  4. 实现归并排序
  5. 实现快速排序
  6. 实现堆排序
  7. 实现二分查找
  8. 在旋转排序数组中查找目标值
  9. 查找第K大的元素
  10. 查找缺失的数字

动态规划

  1. 斐波那契数列
  2. 求解背包问题
  3. 找到数组中的最长递增子序列
  4. 找到两个字符串的最长公共子序列
  5. 找到硬币组合的最小数目
  6. 判断是否能分割数组为和相等的两部分
  7. 最长回文子串
  8. 不同路径数量
  9. 编辑距离
  10. 房屋偷盗问题

数学问题

  1. 计算阶乘
  2. 判断一个数是否为质数
  3. 计算两个数的最大公约数
  4. 实现一个幂函数
  5. 判断一个数是否为回文数
  6. 找到一个数的平方根
  7. 计算两个数的最小公倍数
  8. 判断一个数是否为丑数
  9. 求解杨辉三角形
  10. 找到一个数的所有因子

其他

  1. 实现LRU缓存机制
  2. 查找图中的连通分量
  3. 实现深度优先搜索(DFS)
  4. 实现广度优先搜索(BFS)
  5. 判断两个二叉树是否相同
  6. 找到二叉树中的所有叶子节点
  7. 计算二叉树的直径
  8. 生成括号的所有合法组合
  9. 找到N皇后问题的所有解
  10. 求解汉诺塔问题
  11. 实现一个线程安全的单例模式
  12. 实现一个生产者-消费者模型
  13. 计算数组中逆序对的数量
  14. 检查字符串中的括号是否匹配
  15. 实现字符串的全组合
  16. 查找链表中的倒数第K个节点
  17. 实现链表的分区
  18. 判断一个链表是否为回文链表
  19. 实现一个队列(FIFO)
  20. 实现一个栈(LIFO)
  21. 找到数组中的第一个缺失正数
  22. 找到N个数中出现次数超过N/3的元素
  23. 在矩阵中找到目标值
  24. 查找最长的无重复字符的子串
  25. 查找数组中连续子数组的最大和
  26. 查找二维矩阵中的峰值
  27. 找到一个字符串中所有异位词的起始索引
  28. 实现Trie(前缀树)
  29. 实现最短路径算法(如Dijkstra算法)
  30. 解决约瑟夫环问题
 
posted @ 2024-08-13 15:48  抽象Java  阅读(6)  评论(0编辑  收藏  举报