整体难度
今年的FRQ考题相较于往年考题,除第一题暗示比较模糊外,其他的题型还是比较容易找到切入点的,对应难度相较于往年变化不是很大。但由于Q1开始说的不太清晰,不是特别容易一下子想到该用什么方式去做,比较考验同学们对问题的理解能力和转化为代码的能力。
往年题目对比
基本上还是考察对于固定算法的应用,Q1使用的counting,Q2使用substring切分字符串,Q3的经典ArrayList remove跳过问题,以及Q4 的二维数组遍历。只要能明白题目含义还是比较容易回答的,但整体难度也体现在同学们对题目的理解上。
逐题讲解
 FRQ-1
a) 本题考查counting算法的使用,需要同学计算出什么时间开始可以找到对应的FreeBlock,因此应该想到从某一个period开始到结束,应该去寻找对应的符合要求的时间间隔,使用isMinuteFree函数可以计算出当前分钟是否为true,因此需要遍历寻找,直至寻找到符合要求的time gap,并return其起始位置。
👉参考代码:
b) 第二问比较简单,需要利用a问的findeFreeBlock得到开始时间直接调用reserveBlock即可

FRQ-2
第二题是比较容易的class问题,题目中提到需要写两个方法和一个constructor,例子也给的非常清晰,只需要写完之后代入例子计算得到正确结果即可。
👉参考代码:


 FRQ-3
a) 第三题a问属于经典的ArrayList remove 跳过问题,直接写即可,如使用for循环,倒序不需要进行 - - 操作。
👉参考代码:

b) 这道题目可以采用类似求maximum/minimum的方式写出。
👉参考代码:

 FRQ-4
第四题为二维数组问题,其题目比较容易理解。
a) 问根据题意,可以把底部任意一个candy置换到顶部,本题样例采用row由低到高第一个遇到的candy置换到row 0 的方式书写
👉参考代码:

b) 属于行优先遍历,比较不同的是本次从最下面开始遍历到最上面,遇到相同的flavor即可return,因此也考察了string .equals()的使用
👉参考代码:


本文作者


福利:2023FRQ真题
TD整理了CB目前在官网最新更新的2023年北美卷的AP FRQ真题免费分享给大家,有需要的同学可以扫下方二维码,添加TD客服马甲,给马甲发送暗号「2023frq即可领取~其他科目真题将随官网更新陆续放入分享链接中,敬请关注~
继续阅读
阅读原文