0
点赞
收藏
分享

微信扫一扫

数据结构入门(第一天)

力扣-数据结构入门:https://leetcode.cn/study-plan/data-structures/

在计算机科学中,数据结构是计算机中存储、组织数据的方式。

正确的数据结构选择可以提高算法的效率。在计算机程序设计的过程中,选择适当的数据结构是一项重要工作。许多大型系统的编写经验显示,程序设计的困难程度与最终成果的质量与表现,取决于是否选择了最适合的数据结构。 一共14天,主要是简单题。

第一天(2022年9月18日)

217. 存在重复元素

给定数组,判断是否存在重复元素。 做法:

  1. 直接遍历(穷举)
  2. 排序后,比较每个元素和下一个元素
  3. 哈希表

直接遍历会超时。 2的时间复杂度是O(nlogn) 也就是排序的时间复杂度 3的时间复杂度是O(n),但需要额外的O(n)辅助空间。 (穷举法基本都能想到,但很容易超时,后面只有在穷举法能通过时才列出来。)

3比较简单,这里写一下3的做法:

return len(nums) != len(set(nums))

53. 最大子数组和

给定数组,求其中一个连续数组和的最大值。

比较容易想到的是用一个数组记录目前位置最大的值(动态规划)。

dp[i] 表示以i位置结尾的连续数组和的最大值。 最后返回dp数组中最大值。

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        length = len(nums)
        dp = [0 for i in range(length)]
        for i in range(length):
            dp[i] = max(dp[i - 1], 0) + nums[i]
        return max(dp)

题解给出了一种省略dp数组的方法:

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        pre = 0
        res = nums[0]
        for x in nums:
            pre = max(pre+x ,x)
            res = max(res, pre)
        return res
举报

相关推荐

0 条评论