LeetCode【3--无重复的最长字串】 LeetCode【4--有序数组中的中位数】
无重复的最长字串
题目描述
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
解题思路
看到这道题,其实就两个步骤,遍历字符串,记录当前字符有没有重复。
重复一般解决就是哈希,这里用个数组表示。
这里找最长的字串,就是一个滑动窗口,我们在这里用两个下标表示,一个为左边界,一个为右边界,
初始值left = 0,right = -1;
滑动窗口的滑动就是,右边界扩大,左边界缩小
拿abcabcbb举例
- 先扩大右边界看有没有越界right+<s.size() 然后要看当前字符a在哈希表中有没有重复出现count[s[right+1]] == 0,如果没有,那么count[s[++right]]++; 就是右边界可以扩大,并且标记a已重复
- 第一步完成后,right = 0,left = 0 ,重复上述步骤,判断right+1<size&&count[s[right+1]] == 0,成功后b也没有重复,那么右边界再往右扩一个
- 第二步完成后,right = 1,left = 0,再重复上述步骤,判断rihgt+1<size&&count[s[right+1]] == 0, c也没有重复,右边界再往右扩一个
- 第三部完成后,right = 2,left = 0,再重复上述步骤,判断right+1<size&&count[s[right+1]] == 0,此时又判断到了a,那么count[s[left++]] --,缩小左边界,同时把哈希中的值更改
- 。。。。。往后重复此操作
- 每一步操作都要比较旧窗口大小和新窗口大小,就是max(旧的,新的),找出最大值
代码实现
class Solution {public:int lengthOfLongestSubstring(string s) {int count[256] = {0}; //哈希int right = -1; //右边界int left = 0;//左边界int res = 0; //窗口大小while(left<s.size()){if(right+1<s.size()&&count[s[right+1]] == 0)count[s[++right]] ++;elsecount[s[left++]]--;res = max(res,right-left+1);}return res;}
};
有序数组中的中位数
题目描述
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。
请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。
解题思路
所有的数据结构的中位数都可以用两个函数解决,就是剑指offer中的数据流中的中位数
具体思路点这里
代码实现
class Solution {priority_queue<int,vector<int>,less<int>> max;priority_queue<int,vector<int>,greater<int>> min;
public:void Insert(int num){if(max.empty() || num<= max.top())max.push(num);elsemin.push(num);//保证两个堆的元素个数之差小于1if(max.size() == min.size()+2){min.push(max.top());max.pop();}if(max.size()+1 == min.size()){max.push(min.top()); min.pop();}}double GetMedian(){ return max.size() == min.size() ? (max.top()+min.top())/2.0 : max.top();}double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {for(int i = 0; i<nums1.size();++i){Insert(nums1[i]);}for(int i = 0;i<nums2.size();++i){Insert(nums2[i]);}double res =GetMedian();return res;}
};
LeetCode【3--无重复的最长字串】 LeetCode【4--有序数组中的中位数】相关推荐
- 无重复字符最长字串的滑动窗口结合哈希表解法(注释详尽)
这个解法是由leetcode上的jack这名用户上传,巧妙的使用了哈希表来缩短执行时间,非常值得学习,但是原作者并没有将原理和亮点讲的很清楚,所以我重新将它梳理了一遍发了出来. 思路: 这个解法是以常 ...
- LeetCode / Scala - 无重复字符最长子串 ,最长回文子串
一.引言 LeetCode 里有一类字符子串问题,这里主要分析无重复字符的最长子串与最长回文子串,总结相关方法. 二.无重复字符最长子串 1.题目要求 给定字符串 s,要求找出字符内无重复的最长子串, ...
- LeetCode 153. Find Minimum in Rotated Sorted Array (在旋转有序数组中找到最小值)
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- LeetCode中等题之无重复字符的最长字串
题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &q ...
- python leetcode_python实现leetcode中无重复字符的最长字串
无重复字符的最长字串是一道经典的额字符串处理算法的题目,日常编程过程中,处理字符串是很多见的.用Python来实现leetcode这道算法题,这题会涉及到一个概念"滑动窗口"的概 ...
- [剑指offer]面试题第[48]题[Leetcode][JAVA][第3题][无重复字符的最长字串][滑动窗口][HashSet/Map]
[问题描述][第3题][无重复字符的最长字串] 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度.示例 1:输入: "abcabcbb" 输出: 3 解释: 因为无重 ...
- leetcode 3.无重复字符的最长子串(中等)
难度:中等 频率:271 题目:给定一个字符串s,请你找出其中不含有重复字符的最长字串的长度 题目类型:HashSet 结构 or 滑动窗口 解题方法:HashSet+滑动窗口(双指针标记left+r ...
- LeetCode 3:无重复字符的最长子串 思考分析
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...
- [贪心|字符串] leetcode 3 无重复字符的最长子串
[贪心|字符串] leetcode 3 无重复字符的最长子串 1.题目 题目链接 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度. 示例1: 输入: "abcabcbb" ...
最新文章
- IT一大道至简: 文章列表
- Springmvc+Easyui 搜索,新增,删除,修改
- Android:控件WebView显示网页
- EOS开发基础之五:使用cleos命令行客户端操作EOS——智能合约之Exchange
- 旷视《人工智能应用准则》全文公布 提倡善用AI技术
- 30分钟3300%性能提升—python+memcached网页优化小记
- 大数据WEB阶段(十八)数据库事务
- java学习教程之代码块
- Linux Shell常用技巧(三)
- java 内存 开发 经验_有一到五年开发经验的JAVA程序员需要掌握的知识与技能!...
- 2018-2019-1 20165303 实验五 通讯协议设计
- python网络编程linux pdf_Python网络编程:Linux epoll
- wordpress发布文章错误:此响应不是合法的JSON响应
- Windows 资源保护找到了损坏文件,但其中有一些文件无法修复
- Flask Restful 接口 - SqlAlchemy Marshmallow
- 人生如逆旅,我亦是行人。
- 找到100亿个URL中重复的URL
- docker看这一篇就够了
- ROS | launch启动文件的使用
- 小米 MIX4 发布、三年要拿下全球第一、还有一只 9999 元的狗?快看 3 个小时雷军都讲了什么!...
热门文章
- 经典MapReduce作业和Yarn上MapReduce作业运行机制
- 010 pandas的DataFrame
- linux线程基础篇----线程同步与互斥
- eclipse 下使用git clone
- 接口安全--签名验证
- android一键分享功能不使用任何第三方sdk
- KingPaper初探ThinkPHP3.1.2之扩展函数库和类库的使用(四)
- php发邮箱验证码找回密码,织梦dede会员通过邮箱找回密码方法
- qt绘制一圈圆_Qt绘制圆
- php codeigniter ext,php – 私有服务器上CodeIgniter不正确的系统路径