无重复的最长字串

题目描述

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

解题思路

看到这道题,其实就两个步骤,遍历字符串,记录当前字符有没有重复。
重复一般解决就是哈希,这里用个数组表示。
这里找最长的字串,就是一个滑动窗口,我们在这里用两个下标表示,一个为左边界,一个为右边界,
初始值left = 0,right = -1;
滑动窗口的滑动就是,右边界扩大,左边界缩小
拿abcabcbb举例

  1. 先扩大右边界看有没有越界right+<s.size() 然后要看当前字符a在哈希表中有没有重复出现count[s[right+1]] == 0,如果没有,那么count[s[++right]]++; 就是右边界可以扩大,并且标记a已重复
  2. 第一步完成后,right = 0,left = 0 ,重复上述步骤,判断right+1<size&&count[s[right+1]] == 0,成功后b也没有重复,那么右边界再往右扩一个
  3. 第二步完成后,right = 1,left = 0,再重复上述步骤,判断rihgt+1<size&&count[s[right+1]] == 0, c也没有重复,右边界再往右扩一个
  4. 第三部完成后,right = 2,left = 0,再重复上述步骤,判断right+1<size&&count[s[right+1]] == 0,此时又判断到了a,那么count[s[left++]] --,缩小左边界,同时把哈希中的值更改
  5. 。。。。。往后重复此操作
  6. 每一步操作都要比较旧窗口大小和新窗口大小,就是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--有序数组中的中位数】相关推荐

  1. 无重复字符最长字串的滑动窗口结合哈希表解法(注释详尽)

    这个解法是由leetcode上的jack这名用户上传,巧妙的使用了哈希表来缩短执行时间,非常值得学习,但是原作者并没有将原理和亮点讲的很清楚,所以我重新将它梳理了一遍发了出来. 思路: 这个解法是以常 ...

  2. LeetCode / Scala - 无重复字符最长子串 ,最长回文子串

    一.引言 LeetCode 里有一类字符子串问题,这里主要分析无重复字符的最长子串与最长回文子串,总结相关方法. 二.无重复字符最长子串 1.题目要求 给定字符串 s,要求找出字符内无重复的最长子串, ...

  3. 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. ...

  4. LeetCode中等题之无重复字符的最长字串

    题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &q ...

  5. python leetcode_python实现leetcode中无重复字符的最长字串

    ​无重复字符的最长字串是一道经典的额字符串处理算法的题目,日常编程过程中,处理字符串是很多见的.用Python来实现leetcode这道算法题,这题会涉及到一个概念"滑动窗口"的概 ...

  6. [剑指offer]面试题第[48]题[Leetcode][JAVA][第3题][无重复字符的最长字串][滑动窗口][HashSet/Map]

    [问题描述][第3题][无重复字符的最长字串] 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度.示例 1:输入: "abcabcbb" 输出: 3 解释: 因为无重 ...

  7. leetcode 3.无重复字符的最长子串(中等)

    难度:中等 频率:271 题目:给定一个字符串s,请你找出其中不含有重复字符的最长字串的长度 题目类型:HashSet 结构 or 滑动窗口 解题方法:HashSet+滑动窗口(双指针标记left+r ...

  8. LeetCode 3:无重复字符的最长子串 思考分析

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...

  9. [贪心|字符串] leetcode 3 无重复字符的最长子串

    [贪心|字符串] leetcode 3 无重复字符的最长子串 1.题目 题目链接 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度. 示例1: 输入: "abcabcbb" ...

最新文章

  1. IT一大道至简: 文章列表
  2. Springmvc+Easyui 搜索,新增,删除,修改
  3. Android:控件WebView显示网页
  4. EOS开发基础之五:使用cleos命令行客户端操作EOS——智能合约之Exchange
  5. 旷视《人工智能应用准则》全文公布 提倡善用AI技术
  6. 30分钟3300%性能提升—python+memcached网页优化小记
  7. 大数据WEB阶段(十八)数据库事务
  8. java学习教程之代码块
  9. Linux Shell常用技巧(三)
  10. java 内存 开发 经验_有一到五年开发经验的JAVA程序员需要掌握的知识与技能!...
  11. 2018-2019-1 20165303 实验五 通讯协议设计
  12. python网络编程linux pdf_Python网络编程:Linux epoll
  13. wordpress发布文章错误:此响应不是合法的JSON响应
  14. Windows 资源保护找到了损坏文件,但其中有一些文件无法修复
  15. Flask Restful 接口 - SqlAlchemy Marshmallow
  16. 人生如逆旅,我亦是行人。
  17. 找到100亿个URL中重复的URL
  18. docker看这一篇就够了
  19. ROS | launch启动文件的使用
  20. 小米 MIX4 发布、三年要拿下全球第一、还有一只 9999 元的狗?快看 3 个小时雷军都讲了什么!...

热门文章

  1. 经典MapReduce作业和Yarn上MapReduce作业运行机制
  2. 010 pandas的DataFrame
  3. linux线程基础篇----线程同步与互斥
  4. eclipse 下使用git clone
  5. 接口安全--签名验证
  6. android一键分享功能不使用任何第三方sdk
  7. KingPaper初探ThinkPHP3.1.2之扩展函数库和类库的使用(四)
  8. php发邮箱验证码找回密码,织梦dede会员通过邮箱找回密码方法
  9. qt绘制一圈圆_Qt绘制圆
  10. php codeigniter ext,php – 私有服务器上CodeIgniter不正确的系统路径