当前位置 : 主页 > 编程语言 > python >

数据结构入门(第一天)

来源:互联网 收集:自由互联 发布时间:2022-09-29
力扣-数据结构入门:https://leetcode.cn/study-plan/data-structures/ 在计算机科学中,数据结构是计算机中存储、组织数据的方式。 正确的数据结构选择可以提高算法的效率。在计算机程序设计

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

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

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

第一天(2022年9月18日)

217. 存在重复元素

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

  • 直接遍历(穷举)
  • 排序后,比较每个元素和下一个元素
  • 哈希表
  • 直接遍历会超时。 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
    上一篇:远程使用 jupyter notebook
    下一篇:没有了
    网友评论