力扣双周赛第55期

这是我参与更文挑战的第27天,活动详情查看:更文挑战

5780. 删除一个元素使数组严格递增

截屏2021-06-27 下午7.43.22.png

思路分析

这道题我花了大量的时间在各种情况的讨论中迷茫

在已知nums[i – 1] > nums[i]的前提下,nums[i – 2] 和 nums[i + 1]位置的不同,会产生四种情况。

(为方便叙述,以下将nums[i – 1] 和 nums[i]命名为a,b,将nums[i – 2] 和 nums[i + 1]命名为x,y)

  • 在b> x的情况下:
    • 在a > y 的情况下:应该删除y点
    • 在 a<y 的情况下 应该删除y点或x点任意一点
  • 在b< x的情况下:
    • 在a > y 的情况下:删除哪个都不好使
    • 在a < t 的情况下:可以删除x点。

写到这里才发现,还需要考虚b == x 以及 a == y的情况,这就造成了九种情况,转念一想,还需要考虑不存在a点或不存在b点的情况。

大量的不同条件的讨论让人迷惑,看来只能换一种方法。

我们发现其实多种情况造成的结果是可以合并的,无非是删除x点好使,删除y点好使,删除哪个点都不好使。

因此我们可以前后各运行一次for循环,来判断删除遇到的第一个非法点是否可以使数组严格递增。

代码

最近几篇文章有几道题是没写代码的,这就是因为我是看题解才会的这道题,虽然理论上看完题解应该再独立做一遍,但大多很难跑出别人的框架,(比如dfs是稍微延续了下自己的写法,所以就贴出来了代码),贴别人的代码又有违原创。因此代码就略了。

5781. 删除一个字符串中所有出现的给定子字符串

截屏2021-06-27 下午8.13.33.png

思路分析

这道题。。。,好像直接replace就可以了。没啥可分析的,应该没人不会写。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享