前言:第一次参加比赛,只解出了第一道题,共勉。

题目链接:

6008. 统计包含给定前缀的字符串 https://leetcode-cn.com/problems/counting-words-with-a-given-prefix/

6009.使两字符串互为字母异位词的最少步骤数 https://leetcode-cn.com/problems/minimum-number-of-steps-to-make-two-strings-anagram-ii/

6010.完成旅途的最少时间 https://leetcode-cn.com/problems/minimum-time-to-complete-trips/

6011.完成比赛的最少时间 https://leetcode-cn.com/problems/minimum-time-to-finish-the-race/

一. 函数学习

1.startsWith方法:判断前缀字符串 

if(words[i].startsWith(pref) == true)
                ++cnt;

二. 题解思路

6008:基础题,先把字符串转数组,再用startsWith方法进行前缀子串判断。

6009:题目的目的一目了然,就是想找到两个字符串互相不同的字母数量。新建两个int数组用于储存两字符串中各字母出现的数量,然后再将它们相应做差得到的结果相加,即为所求。

6010:先排序,然后计算出可能耗费的最大时间,作为右侧边界,以最左侧为左边界,进行二分查找。除法结果取整即为趟数,进行累加然后再二分。

6011:动态规划DP的题目。稍微有些复杂,还没看懂,暂时mark一下,等能力够了再补上。

三. 心得

思路上还欠缺很多,6009就是一个很好的例子,其实用一个Int数组就可以统计出来每个字母出现的次数,但满脑子都是前几天刚学到的HashMap,键值对又太过复杂,导致没做出这道题。

6010大概跑通了一半的例子,但一直在报超时的错。原因也是没想到二分,我的遍历方式是按时刻遍历,在每个时刻去看公交车完没完成一次旅途。其实这是完全没有必要的,我们可以在任何时刻看每辆公交车已经完成了多少趟,然后累加即为旅途数目。这种思维才有可能进行二分。

posted on 2022-02-27 15:14  SelmaS  阅读(112)  评论(0编辑  收藏  举报