[Leetcode]存在重复元素&最大子序和
这次刷的是leetcode的14天数据结构题目集,这是第一天的题目集✨🎉
最近在看王道的数据结构和《小灰漫画算法》,顺便练习一下Golang。
存在重复元素
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。
Example1:
1 | 输入: [1,2,3,1] |
Example2:
1 | 输入: [1,2,3,4] |
Example3:
1 | 输入: [1,1,1,3,3,4,3,2,4,2] |
解题思路&题解
已知数组是一个整型数组,故我们可以对数组进行排序,然后遍历数组。
通过判断相邻两个元素是否相等,从而判断数组是否有重复元素。
题解如下:
1 | func containsDuplicate(nums []int) bool { |
最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
Example1:
1 | 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] |
Example2:
1 | 输入:nums = [1] |
Example3:
1 | 输入:nums = [0] |
Example4:
1 | 输入:nums = [-1] |
Example5:
1 | 输入:nums = [-100000] |
解题思路&题解
这道题可以说是浙大数据结构讲的 最大子列和 问题的变形,第一时间想到的是在线处理。
但这里需要注意输入的内容可以是负的,因此将原本的在线处理稍微变形。for循环的时候将已经遍历的元素累加起来,如果当前元素和累加结果相加大于当前元素(nums[i - 1] + nums[i] > nums[i]
)则证明改子列不会变小,然后再和最大值进行比较。
题解如下:
1 | func maxSubArray(nums []int) int { |