基础算法题

简介: 基础算法编程题

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

相关文章
|
4月前
|
存储 算法 Python
Python算法界的秘密武器:分治法巧解难题,贪心算法快速决策,动态规划优化未来!
【7月更文挑战第9天】Python中的分治、贪心和动态规划是三大关键算法。分治法将大问题分解为小问题求解,如归并排序;贪心算法每步选局部最优解,不保证全局最优,如找零钱;动态规划存储子问题解求全局最优,如斐波那契数列。选择合适算法能提升编程效率。
67 1
|
4月前
|
算法 索引 Python
逆袭算法界!Python分治法、贪心算法、动态规划深度剖析,带你走出算法迷宫!
【7月更文挑战第8天】分治法,如快速排序,将大问题分解并合并解;贪心算法,选择局部最优解,如活动选择;动态规划,利用最优子结构避免重复计算,如斐波那契数列。Python示例展示这些算法如何解决实际问题,助你精通算法,勇闯迷宫。
46 1
|
机器学习/深度学习 存储 自然语言处理
蓝桥杯系列3——基础算法
蓝桥杯系列3——基础算法
70 0
|
算法
【学习挑战赛】经典算法之折半查找
【学习挑战赛】经典算法之折半查找
172 0
|
算法 搜索推荐
【学习挑战赛】经典算法之直接插入排序
【学习挑战赛】经典算法之直接插入排序
70 0
|
算法 搜索推荐
【学习挑战赛】经典算法之直接选择排序
【学习挑战赛】经典算法之直接选择排序
56 0
|
算法 Java C语言
21天挑战赛算法学习打卡——顺序查找
21天挑战赛算法学习打卡——顺序查找
63 0
|
存储 算法 大数据
基础算法-高精度乘法
高精度算法 为什么要使用高精度算法 C++ 每一个变量都有自己的类型,每个类型都有自己的存储长度范围
|
机器学习/深度学习 存储 人工智能
【有营养的算法笔记】基础算法 —— 归并排序思路梳理和应用
【有营养的算法笔记】基础算法 —— 归并排序思路梳理和应用
120 0
【有营养的算法笔记】基础算法 —— 归并排序思路梳理和应用