每日算法&面试题,大厂特训十四天——第五天(双指针)

Posted 肥学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日算法&面试题,大厂特训十四天——第五天(双指针)相关的知识,希望对你有一定的参考价值。

目录标题

导读

肥友们为了更好的去帮助新同学适应算法和面试题,最近我们开始进行专项突击一步一步来。上一期我们完成了动态规划二十一天现在我们进行下一项对各类算法进行十四天的一个小总结。还在等什么快来一起肥学进行十四天挑战吧!!

特别介绍

📣小白练手专栏,适合刚入手的新人欢迎订阅编程小白进阶

📣python有趣练手项目里面包括了像《机器人尬聊》《恶搞程序》这样的有趣文章,可以让你快乐学python练手项目专栏

📣另外想学JavaWeb进厂的同学可以看看这个专栏:传送们

📣这是个冲刺大厂面试专栏还有算法比赛练习我们一起加油 上岸之路

算法特训十四天

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

示例 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;
        
    


面试题

继续上一期的:

IO 密集=Ncpu*2 是怎么计算出来? I/O 密集型任务任务应用起来,系统会用大部分的时间来处理 I/O 交互,而线程在处理I/O 的时间段内不会占用 CPU 来处理,这时就可以将 CPU 交出给其它线程使用。因此在 I/O密集型任务的应用中,我们可以多配置一些线程。例如:数据库交互,文件上传下载, 网络传输等。IO 密集型,即该任务需要大量的 IO,即大量的阻塞,故需要多配置线程数。

7、G1 收集器有哪些特点?
 G1 的全称是 Garbage-First,意为垃圾优先,哪一块的垃圾最多就优先清理它。

 G1 GC 最主要的设计目标是:将 STW 停顿的时间和分布,变成可预期且可配置的。
被视为 JDK1.7HotSpot 虚拟机的一个重要进化特征。它具备一下特点:

 并行与并发: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学习资料还有有有趣好玩的编程项目,更有难寻的各种资源。反正看看也不亏。

以上是关于每日算法&面试题,大厂特训十四天——第五天(双指针)的主要内容,如果未能解决你的问题,请参考以下文章

每日算法&面试题,大厂特训十四天——第二天(双指针)

每日算法&面试题,大厂特训二十八天——第十五天(字符串)

蓝桥集训(附加面试题)第四天

每日算法&面试题,大厂特训十四天——第三天(双指针)

每日算法&面试题,大厂特训二十八天——第二十五天(条件语句)

每日算法&面试题,大厂特训二十八天——第六天(双指针)