[Leetcode] 525. Contiguous Array 解题报告
来源:互联网 发布:淘宝平面模特怎么找 编辑:程序博客网 时间:2024/05/09 23:59
题目:
Given a binary array, find the maximum length of a contiguous subarray with equal number of 0 and 1.
Example 1:
Input: [0,1]Output: 2Explanation: [0, 1] is the longest contiguous subarray with equal number of 0 and 1.
Example 2:
Input: [0,1,0]Output: 2Explanation: [0, 1] (or [1, 0]) is a longest contiguous subarray with equal number of 0 and 1.
Note: The length of the given binary array will not exceed 50,000.
思路:
总体思路是:我们遍历nums,然后检查截止每个位置的时候,0比1多几个。假设在第i个位置上发现了0比1多x个,在j (j > i)这个位置上又发现0比1多x个,那么就说明在区间[i + 1, j]内,0和1的个数是相同的。为了便于统计,我们可以设一个哈希表,记录从0比1多的个数到最早出现多这么个的位置的映射。为了统一处理各种情况,可以设定hash[0] = -1。代码的空间复杂度是O(n),时间复杂度是O(n)。
代码:
class Solution {public: int findMaxLength(vector<int>& nums) { if (nums.size() == 0) { return 0; } int last = 0, curr = 0; unordered_map<int, int> hash; // {diff, index} hash[0] = -1; int max_length = 0; for (int i = 0; i < nums.size(); ++i) { curr = last + (nums[i] == 0 ? 1 : -1); if (hash.count(curr) == 0) { hash[curr] = i; } else { max_length = max(max_length, i - hash[curr]); } last = curr; } return max_length; }};
阅读全文
0 0
- [Leetcode] 525. Contiguous Array 解题报告
- LeetCode 525. Contiguous Array
- Leetcode 525. Contiguous Array
- [LeetCode]525. Contiguous Array
- [leetcode] 525. Contiguous Array
- [leetcode]525. Contiguous Array
- LeetCode 525. Contiguous Array
- [LeetCode] 525. Contiguous Array
- leetcode 525. Contiguous Array
- LeetCode 525. Contiguous Array
- leetcode 525.Contiguous Array
- leetcode题解-525. Contiguous Array
- [leetCode刷题笔记]525. Contiguous Array
- [LeetCode]Contiguous Array
- LeetCode.525 Contiguous Array
- LeetCode-Rotate Array-解题报告
- 525. Contiguous Array
- 525. Contiguous Array
- AngularJs的表格
- submit和execute区别 二 (代码模式进行测试)
- websevice的原理及使用方法
- 动态生成验证码
- OLED
- [Leetcode] 525. Contiguous Array 解题报告
- 2017CUIT & FJUT & SWPU三校联合新生赛-决赛 D,E
- CTF竞赛
- 蓝桥杯 算法训练 Anagrams问题
- [BZOJ5110][CODE+ DIV1 T4]Yazid 的新生舞会 线段树
- Android OkHttp封装
- CSS创建下拉菜单以及遇到的问题
- 索引问题
- 编写一个应用程序,用户分别从两个文本框输入学术的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。