目录标题
导读
肥友们为了更好的去帮助新同学适应算法和面试题,最近我们开始进行专项突击一步一步来。上一期我们完成了动态规划二十一天现在我们进行下一项对各类算法进行十四天的一个小总结。还在等什么快来一起肥学进行十四天挑战吧!!
特别介绍
算法特训十四天
示例 1:
输入:s = ["h","e","l","l","o"]
输出:["o","l","l","e","h"]
示例 2:
输入:s = ["H","a","n","n","a","h"]
输出:["h","a","n","n","a","H"]
class Solution {
public void reverseString(char[] s) {
int n = s.length;
for (int left = 0, right = n - 1; left < right; ++left, --right) {
char tmp = s[left];
s[left] = s[right];
s[right] = tmp;
}
}
}
示例:
输入:"Let's take feixue contest"
输出:"s'teL ekat euxief tsetnoc"
class Solution {
public String reverseWords(String s) {
char[] ss=s.toCharArray();
int n=s.length();
int l=0,r=0;
while(l<n){
if(ss[l]==' ') l++;
else{
r=l;
while(r<n&&ss[r]!=' '){//防止越界,并寻找结尾
r++;
}
if(r<n) swap(ss,l,r-1);//考虑越界,很有可能最后一个单词是直接到最后一个字符
else swap(ss,l,n-1);
l=r;
}
}
return new String(ss);
}
void swap(char[] ss,int l,int r){//交换顺序
for(int i=0;i<=(r-l)/2;i++){
char temp=ss[l+i];
ss[l+i]=ss[r-i];
ss[r-i]=temp;
}
}
}
面试题
继续上一期的:
7、G1 收集器有哪些特点?
G1 的全称是 Garbage-First,意为垃圾优先,哪一块的垃圾最多就优先清理它。
G1 GC 最主要的设计目标是:将 STW 停顿的时间和分布,变成可预期且可配置的。
被视为 JDK1.7 中 HotSpot 虚拟机的一个重要进化特征。它具备一下特点:
并行与并发:G1 能充分利用 CPU、多核环境下的硬件优势,使用多个 CPU(CPU 或者
CPU 核心)来缩短 Stop-The-World 停顿时间。部分其他收集器原本需要停顿 Java 线
程执行的 GC 动作,G1 收集器仍然可以通过并发的方式让 java 程序继续执行。
分代收集:虽然 G1 可以不需要其他收集器配合就能独立管理整个 GC 堆,但是还是保留
了分代的概念。
空间整合:与 CMS 的“标记-清理”算法不同,G1 从整体来看是基于“标记-整理”算
法实现的收集器;从局部上来看是基于“标记-复制”算法实现的。
可预测的停顿:这是 G1 相对于 CMS 的另一个大优势,降低停顿时间是 G1 和 CMS 共
同的关注点,但 G1 除了追求低停顿外,还能建立可预测的停顿时间模型,能让使用者明
确指定在一个长度为 M 毫秒的时间片段内。
G1 收集器在后台维护了一个优先列表,每次根据允许的收集时间,优先选择回收价值最大的
Region(这也就是它的名字 Garbage-First
点击直接资料领取
这里有python,Java学习资料还有有有趣好玩的编程项目,更有难寻的各种资源。反正看看也不亏。