LeetCode424:替换后的最长重复字符

题意

给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。

Solution1

枚举重复的字符,然后计算对应字符的能构成的最大长度,取最大值。

阅读更多

每日一题:最长有效括号

题意

给定一个只包含 ‘(‘ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。

Solution

栈里面存左括号的位置,当遇到右括号时:

阅读更多

每日一题:最大得分

题意

给定两个严格递增数组,从任意一个数组出发到任意一个数组结束,当遇到相同元素时可以切换到另一个数组,只能从左到右走且每个数只计算一次,求最大累计得分。

Solution

当遇到两个数组都有的元素时可以切换,那其实从上一次遇到相同到这一次,假设中间这部分元素和是 $sum$,无非是看到底是上面这部分的 $sum$ 更大还是下面的 $sum$ 更大,然后选走罢了,如此循环下去。至于判断相同元素,提前用map记录每个元素的位置就好了。时间复杂度$O(n)$。

阅读更多

每日一题:最小区间

题意

你有 k 个升序排列的整数数组。找到一个最小区间,使得 k 个列表中的每个列表至少有一个数包含在其中。

Solution

直接对所有的数排序,然后优先队列维护一个k个数组都有值存在且对当前来说长度最小的滑动窗口,同时维护答案即可。

阅读更多

每日一题:最多的不重叠子字符串

题意

给你一个只包含小写字母的字符串 s ,你需要找到 s 中最多数目的非空子字符串,满足如下条件:

  1. 这些字符串之间互不重叠,也就是说对于任意两个子字符串 s[i..j] 和 s[k..l] ,要么 j < k 要么 i > l 。
  2. 如果一个子字符串包含字符 char ,那么 s 中所有 char 字符都应该在这个子字符串中。
阅读更多

Java自动内存管理机制

Java内存区域与内存溢出异常

概述

对于Java程序员来说,有虚拟机的自动内存管理机制,不再需要像C++那样为每个new操作去写配对的delete/free代码。但正因如此,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是如何使用内存的,那排查错误将会变得异常困难。

运行时数据区域

Java虚拟机在执行Java程序过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。


阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×