java算法题思路_算法题思路总结

引言算法题,无外乎两类:

一类考对基本算法实现的掌握,另一类考运用算法解决实际问题。

第一类:

排序:

快排、归并排序、堆排序怎么实现的?

查找:

有序数组的二分查找、二叉查找树怎么实现的、红黑树是什么?

字符串:

KMP会吗?

鄙人不才,只能想到算法世界里的冰山一角。这些基本算法的实现过程中的思想,需要掌握!最好能用自己的话讲明白。

第二类:

运用数据结构解决实际问题。这种题目有两个考察点:

1、找到一种解决问题的算法

2、实现这种算法,需要用到哪些数据结构?如果你是个JAVA程序员,这些数据结构你能灵活使用吗?

有以上这种感触是在我做了一道扫描线的问题之后。这道题的算法不难,但是找到算法后,运用哪种数据结构呢?自己实现会很耗费时间,所以要做到这两点:

1、熟练掌握常用数据结构的特点,比如堆是一种优先队列的实现你知道吗?

2、熟练掌握编程语言中,数据结构对应的实现是什么?比如你知道JAVA中用PriorityQueue实现了堆吗?

如果你想更精通算法与数据结构,你还需要做到:

熟悉编程语言中对数据结构的实现采用了何种算法,性能怎么样

路漫漫其修远兮~,所以接下来进入正题,介绍常用的解题思路

贪心当我们求解一个问题时,如果能最大化利用我们当前获得的信息,得到当前情况下的最优解,那么当我们迭代完所有的已知条件后,最后的结果就是我们想要的。

堆堆又名“优先队列”,可以加入元素(因为是队列),也可以返回最值(体现优先)

当你的解题思路中,需要:将元素加入队列中暂存、将队列中的最值元素取出来,可以考虑使用堆这种数据结构!

DP

递归

Trie

分治

数学题

逻辑题

KMP

BFS完

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值