基础算法题

简介: 基础算法编程题

1.给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

算法思路:如果数组中数字都为正,直接排序输出最大的三个值的乘积;如果数组中数字有两个或者两个以上负数,则输出最小的两个负数和最大的正数的乘积。

排序方法:Arrays.sort(数组名);

具体代码如下
————————————————

import java.util.Arrays;
import java.util.Scanner;

public class T2 {
   
    public static void main(String[] args) {
   
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入数组长度");
        int n=sc.nextInt();
        int[] nums=new int[n];
        for(int i=0;i<n;i++) {
   
            System.out.println("请输入第"+(i+1)+"个数的值");
            int a=sc.nextInt();
            nums[i]=a;
        }

        jiexi(nums);
    }
    private static int jiexi(int[] nums) {
   
        Arrays.sort(nums);
        int a=nums.length;
        int max = Math.max(nums[0]*nums[1]*nums[a-1],nums[a-1]*nums[a-2]*nums[a-3]);
        System.out.println(max);
        return 0;
    }
}

示例:

输入:nums = [1,2,3]

输出:6

2.约瑟夫环

示例题目:n个人(0,1,2,3,4...n-1),围成一圈,从编号为k的人开始报数,报数报到m的人出队(报数是1,2,...m这样报的)。下次从出队的人之后开始重新报数,循环往复,当队伍中只剩最后一个人的时候,那个人就是大王。现在,给定n,k,m,
请你求出大王的编号。

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
思路:键盘输入m,n,k,令剩余的人数最开始等于总人数,令数组中的值为0,当报数的人的数组值为1时,淘汰改人。然后j归零,重新开始循环。
————————————————


import java.util.Scanner;
public class T3 {
   

    public static void main(String[] args) {
   
        // TODO Auto-generated method stub
        Scanner sc=new Scanner(System.in);

        System.out.println("请输入总人数");
        int n=sc.nextInt();

        System.out.println("请输入从编号为"+"的人开始报数");
        int k=sc.nextInt();

        System.out.println("请输入出队的人的序号");
        int m=sc.nextInt();


        int []arr=new int[n];
        int x=n;//剩余的人数
        int j=0;//第一个开始报数的人
        while(x>1) {
   
            if(k==n)
                k=0;//限制范围
            if(arr[k]==0) {
   
                j++;
                if(j==m) {
   //当到达m个人时,令该位置数组的值等于1
                    arr[k]=1;
                    x--;
                    j=0;
                }
            }
            k++;
        }
        for(int a=0;a<n;a++) {
   
            if(arr[a]==0) {
   
                System.out.println(a);
                break;
            }

        }
    }

}

示例:

输入:5,1,2

输出:3

相关文章
|
Java
filebeat占用文件句柄磁盘满
filebeat作为日志采集客户端,相比较于java编写的fluent,有着低功耗的特性。但在一些极端情况下,忽视filebeat的一些特性配置,可能会带来灾难。之前发过一篇关于filebeat内存占用的案例和分析,今天再说下filebeat占用文件句柄、耗费主机磁盘甚至导致磁盘满的案例。
9520 0
|
11月前
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
306 66
|
7月前
|
消息中间件 Java 测试技术
RocketMQ实战—7.生产集群部署和生产参数
本文详细介绍了RocketMQ生产集群的部署与调优过程,包括集群规划、环境搭建、参数配置和优化策略。
RocketMQ实战—7.生产集群部署和生产参数
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 一文看懂人工智能、机器学习、深度学习是什么、有什么区别!
**摘要:** 了解AI、ML和DL的旅程。AI是模拟人类智能的科学,ML是其分支,让机器从数据中学习。DL是ML的深化,利用多层神经网络处理复杂数据。AI应用广泛,包括医疗诊断、金融服务、自动驾驶等。ML助力个性化推荐和疾病预测。DL推动计算机视觉和自然语言处理的进步。从基础到实践,这些技术正改变我们的生活。想要深入学习,可参考《人工智能:一种现代的方法》和《深度学习》。一起探索智能的乐趣!
517 1
算法金 | 一文看懂人工智能、机器学习、深度学习是什么、有什么区别!
|
Java 编译器 程序员
Java面试高频题:用最优解法算出2乘以8!
本文探讨了面试中一个看似简单的数学问题——如何高效计算2×8。从直接使用乘法、位运算优化、编译器优化、加法实现到大整数场景下的处理,全面解析了不同方法的原理和适用场景,帮助读者深入理解计算效率优化的重要性。
229 6
|
人工智能 自然语言处理 算法
瓴羊Quick Service智能客服算法通过国家网信办深度合成服务算法备案
瓴羊Quick Service智能客服算法通过国家网信办深度合成服务算法备案
340 0
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
310 4
|
存储 缓存 NoSQL
【Java面试题汇总】Redis篇(2023版)
Redis的数据类型、zset底层实现、持久化策略、分布式锁、缓存穿透、击穿、雪崩的区别、双写一致性、主从同步机制、单线程架构、高可用、缓存淘汰策略、Redis事务是否满足ACID、如何排查Redis中的慢查询
【Java面试题汇总】Redis篇(2023版)
|
存储 监控 Java
|
数据采集 数据挖掘 Python
Python中collections模块的Counter计数器:深入解析与应用
在Python的`collections`模块中,`Counter`是一个强大且实用的工具,它主要用于计数可哈希对象。无论是统计单词出现的频率,还是分析数据集中元素的分布情况,`Counter`都能提供快速且直观的结果。本文将深入解析`Counter`计数器的原理、用法以及它在实际应用中的价值。
下一篇
oss云网关配置