算法每日学打卡——java语言基础题目打卡(16-18)

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 算法每日学打卡——java语言基础题目打卡(16-18)

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号: 好好学java,获取优质学习资源。

“算法每日学计划”16打卡: 时间限制:1.0s 内存限制:256.0MB 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。 输入格式 输入一个正整数N。 输出格式 输出一个整数,表示你找到的最小公倍数。 样例输入 9 样例输出 504 数据规模与约定 1 <= N <= 106。

注意:群里小伙伴解答,感谢!

解题思路: 思路分析:最大 最小公倍数,联想到两个数的求最大最小公倍数,即两个数的乘积(注:连续的两个自然数是互斥的)。

同样,我们可以拿最后三个数来做考虑。

1.当n为奇数时,n,n-1,n-2为奇偶奇,里面只有一个偶数,所以不会有2这个因子。这三个数相差不到3,所以也不会有因子3,故符合题意。

2.当n为偶数时,n,n-1,n-2为偶奇偶,此时n,n-2肯定含有因子2,所以除于2不值得。所以考虑将n-2 换成n-3,变成奇偶奇,此时也有一个问题,

n和n-3,如果n%3==0,则除于3更不值得。仍根据奇偶奇的原则,变动偶数n为n-2,此时换成n-1,n-2,n-3和1情况一样。故此时符合题意。 这里写图片描述

“算法每日学计划”16打卡: 描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入 第一行输入一个数N(0


public static void main(String[] args) {  
        Scanner sc = new Scanner(System.in);  

        int n= sc.nextInt();

        Stack&lt;Character&gt; stack = null;  

        while(n!=0){  

            //从控制台读入一个测试字符串[]() [(])  
            String str = sc.next();  
            //如果该输入字符串为奇数,说明不匹配  
            if(str.length() % 2 == 1){  
                System.out.println("No");  
            }else{  
                //说明字符是偶数  
                stack = new Stack&lt;Character&gt;();  
                for(int i=0;i&lt;str.length();i++){  
                    if(stack.isEmpty()){  
                        //如果栈是空的  
                        stack.push(str.charAt(i));  
                    }else if(stack.peek() == '[' &amp;&amp; str.charAt(i) == ']' || stack.peek() == '(' &amp;&amp; str.charAt(i) == ')'){  
                        //说明此时栈中字符不是空的,并且符合,  
                        stack.pop();  
                    }else{  

                        stack.push(str.charAt(i));  
                    }  
                }  

                if(stack.isEmpty()){  
                    //如果栈是空的,说明括号匹配  
                    System.out.println("Yes");  
                }else{  
                    //说明栈不为空,括号不匹配  
                    System.out.println("No");  
                }  
            }  

            n--;  
        }  

    }  

“算法每日学计划”17打卡: 时间限制:5000 ms | 内存限制:65535 KB 难度:3 描述 给定一整型数列{a1,a2…,an},找出连续非空子串{ax,ax+1,…,ay},使得该子序列的和最大,其中,1<=x<=y<=n。 输入 第一行是一个整数N(N<=10)表示测试数据的组数) 每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的一行里有n个整数I(-100=


import java.io.BufferedInputStream;
import java.util.Arrays;
import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner cin = new Scanner(new BufferedInputStream(System.in));
        int t = cin.nextInt();
        while (t-- &gt; 0) {
            int n = cin.nextInt();
            int[] a = new int[n + 5];
            for (int i = 1; i &lt;= n; i++) {
                a[i] = cin.nextInt();
            }
            int[] f = new int[n + 5];
            Arrays.fill(f, 0);
            f[1] = a[1];
            for (int i = 2; i &lt;= n; i++) {
                if (f[i - 1]  &gt; 0)
                    f[i] = f[i - 1] + a[i];
                else
                    f[i] = a[i];
            }
            int max = Integer.MIN_VALUE;
            for (int i = 1; i &lt;= n; i++) {
                if (max &lt; f[i]) {
                    max = f[i];
                }
            }
            System.out.println(max);
        }
    }

}

“算法每日学计划”18打卡:   问题描述   编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。   输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。   输出格式:输出只有一行,即出现次数最多的那个元素值。 输入输出样例 样例输入 5 100 150 150 200 250 样例输出 150

注意:群里小伙伴解答,感谢! 这里写图片描述

这里写图片描述

原文地址:https://sihai.blog.csdn.net/article/details/80990872

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 算法每日学打卡——java语言基础题目打卡(16-18)


 上一篇
算法每日学打卡——java语言基础题目打卡(11-15) 算法每日学打卡——java语言基础题目打卡(11-15)
文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号: 好好学java,获取优质学习资源。 “算法每日学”11打卡 问题描述:  写一个算法计算出n的阶乘。 n! = n * (n - 1
2021-04-04
下一篇 
Java设计模式(一)——单例模式 Java设计模式(一)——单例模式
一、特点  1、单例类只能有一个实例。   2、单例类必须自己创建自己的唯一实例。   3、单例类必须给所有其他对象提供这一实例。    单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 二.分类(一)、懒汉式
2021-04-04