![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode刷题心得
文章平均质量分 53
某小白在Leetcode题海中苦苦挣扎,想要借CSDN的平台写些自己的刷题心得以期提高,希望能与诸位共勉,如文章中有谬误,可直接评论区指出
JackWillian
这个作者很懒,什么都没留下…
展开
-
剑指Offer 56-II.数组中数字出现的次数II
剑指Offer 56-II.数组中数字出现的次数II题目描述思路一:哈希表思路二:排序+查找思路三:位运算思路四:有限状态机题目描述思路一:哈希表若在没有时空间复杂度的情况下,一个简单的思路是直接使用哈希表记录数组中不同数字出现的次数:class Solution: def singleNumber(self, nums: List[int]) -> int: hashtable=dict() for i in nums: if转载 2021-09-08 23:00:10 · 234 阅读 · 0 评论 -
剑指Offer 56-I 数组中数字出现的次数
剑指Offer 56-I 数组中数字出现的次数题目描述问题分析核心思路代码表述题目描述问题分析这一题最直接的想法是使用哈希表去记录数字出现的次数,再遍历哈希表即可,但这样显然不符合题目对程序空间复杂度为O(1)的要求。进一步,当考虑问题的一个子问题:再整形数组中只有一个数字出现一次而其他数字全出现两次(偶数次),这一子问题是可以通过将所有的数字依次异或操作即可。通过这一方法我们显然能够获得待求两个数字异或的结果,那么下一步只需要想出如何解出其中一个数字即可。核心思路问题的核心思想在于如何将问题原创 2021-09-08 15:04:41 · 165 阅读 · 0 评论 -
Leetcode470 用Rand7()实现Rand10()
Leetcode470 用Rand7实现Rand10题目描述分析进阶分析优化分析拓展题目描述分析首先可以有一种极简单的思路,即让使用rand7生成足够多的状态,然后再从这些状态中选取出等概率且不少于10的状态,这样通过在这些状态对应到1~10即可形成rand10。以下为通过rand7+rand7的结果中选取状态的一种表述:class Solution: def rand10(self): """ :rtype: int """原创 2021-09-05 15:23:03 · 136 阅读 · 0 评论 -
Leetcode53 最大子序和
本文仅作为刷题心得感悟,欢迎评论区交流问题描述:这个题目可以用动态规划的思路去解,构造一个与nums相同长度的数组数组中每一项是以该位置结尾的子序列的最大和,对于第i项的转移公式为dp[i]=max(dp[i-1]+nums[i],nums[i]),据此得到以下的DP程序class Solution: def maxSubArray(self, nums: List[int]) -> int: dp=[nums[0]] for i in r原创 2021-04-16 23:03:14 · 88 阅读 · 0 评论 -
关于用双指针求满足条件的最大区间长度的技巧
仅以此文作为刷题心得记录,如有谬误,还请评论区探讨。问题引入:Leetcode#1208、尽可能使字符串相等 问题对于上述问题很容易想到利用双指针原创 2021-02-05 21:28:18 · 427 阅读 · 0 评论