赞
踩
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。