第一题:最小代价两两合并数组中的数字直到只剩下一个,合并代价是两个数字的和
用最小堆每次弹出两个算和之后再弹进去,计算累计代价
第二题:字符串s字典序第k小的子串-hard
hdu5008 后缀数组+区间最值查询(RMQ算法)+二分
第三题:给定一个二维图,里面有十个boss,编号0-9,"."是可以走的路,"#"是墙是不能走的,最短路径打10个boss,只能从小到大打boss,没打过之前也不能经过更大的boss所在地
BFS 类似leetcode499迷宫III
得到bosst的坐标,然后算0-1,1-2,...,8-9的最短路径求和,求i到i+1时路径时把看大于i的数字看作是墙,如果有不能到达的输出-1
第四题:最长单调序列(增或减都可以)
动态规划 或者 二分
第五题:是否存在长度为m的回文子串
中心扩散算法,分别计算最长的奇数长度和偶数长度的回文串为l1,l2,判断m为奇数时是否小于l1,为偶数时是否小于l2
全部评论
(3) 回帖