基础算法题

简介: 基础算法编程题

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

相关文章
|
8月前
|
存储 算法 数据管理
【C/C++ 基础算法】 C/C++ 位图算法的使用
【C/C++ 基础算法】 C/C++ 位图算法的使用
128 0
|
8月前
|
机器学习/深度学习 存储 算法
基础算法学习笔记(C++)
基础算法学习笔记(C++)
86 0
|
算法 C++
【基础算法】开平方算法 & C++实现
在数学中,因为很多数的开平方都是无理数,所以我们需要借助数值计算的方式来进行近似值的求解。
348 0
【基础算法】开平方算法 & C++实现
|
8月前
|
机器学习/深度学习 算法 vr&ar
强化深度学习中利用时序差分法中的Sarsa算法解决风险投资问题实战(附源码 超详细必看)
强化深度学习中利用时序差分法中的Sarsa算法解决风险投资问题实战(附源码 超详细必看)
86 0
|
机器学习/深度学习 存储 移动开发
常见的基础算法以及技巧框架
常见的基础算法以及技巧框架
118 0
|
存储 算法 大数据
基础算法-高精度乘法
高精度算法 为什么要使用高精度算法 C++ 每一个变量都有自己的类型,每个类型都有自己的存储长度范围
|
算法 C++
|
算法 C++
【基础算法】分治算法 & C++实现
分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法,简单问题可用二分法完成。下面的硬币问题就是分治算法的一种典型算法题。
142 0
【基础算法】分治算法 & C++实现
|
机器学习/深度学习 算法 调度
深度学习经典算法 | 模拟退火算法详解
深度学习经典算法 | 模拟退火算法详解
深度学习经典算法 | 模拟退火算法详解
|
机器学习/深度学习 算法 数据挖掘
机器学习算法背后的数学原理
机器学习算法背后的数学原理
175 0
机器学习算法背后的数学原理