week10_大二上机题源代码

week 10

week 9为考试周无上机

Monday

(第一题)

用二维数组打印出杨辉三角形(要求打印出6行如下图)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

import java.util.Scanner;
public class week10_Monday {
    /*
(一)题目描述
使用二维数组打印出杨辉三角形(要求打印出6行如下图)
     1
    1 1
   1 2 1
  1 3 3 1
 1 4 6 4 1
1 5 10 10 5 1
 */
    static void yhsjzhijiao(int n){
       int [][] arr = new int[n][n];
       int j,i;
       for (i = 0; i < arr.length; i++) {
           for (j = 0; j <= i; j++) {
               if (j == 0 || j == i) {
                   arr[i][j] = 1;
               } else {
                   arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
               }
               System.out.print(arr[i][j] + "\t");
           }
           System.out.println("");
       }
    }
    static void yhsjdengyao(int n) {
        int[][] arr1 = new int[n][n];
        int j , i;
        for (i = 0; i < arr1.length; i++) {
            for (j = 0; j <= i; j++) {
                if (j == 0 || j == i) {
                    arr1[i][j] = 1;
                } else {
                    arr1[i][j] = arr1[i - 1][j - 1] + arr1[i - 1][j];
                }
               // System.out.print(arr1[i][j] + "\t");
            }

            //System.out.println();
        }
        for ( i = 0; i < arr1.length; i++){
            int num = arr1.length -i;
            for(int k = 0;k<= num;k++){
                System.out.print(" ");
            }
            for( j= 0;j<= i;j++){
                System.out.print(arr1[i][j]+" ");
            }
            System.out.println();
        }
    }
        public static void main (String[]args){
            System.out.println("请输入您想要打印几行杨辉三角(eg.6)");
            Scanner scanner = new Scanner(System.in);
            int m = scanner.nextInt();
            //yhsjzhijiao(m);
            yhsjdengyao(m);
        }

(第二题)

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]

/*
(二)题目描述
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
 */
import java.util.Arrays;
import java.util.Scanner;
public class week10_Wednesday {
int[] arr;
    int target;

    void twoSum(int[] arr, int target) {
        //int n;
        this.arr = arr;
        this.target = target;
        for (int i = 0; i < arr.length; i++) {
            for (int j = i + 1; j < arr.length - 1; j++) {
                if (target == arr[i] + arr[j]) {
                    System.out.println("索引为:" + "[" + i + "," + j + "]");
                }
            }
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您想要存入的数字:");
        int[] num = new int[5];
        for (int i = 0; i < num.length; i++) {
            num[i] = scanner.nextInt();
        }
//        int i = scanner.nextInt();
//        String s = Integer.toString(i);
//        char[] chars = s.toCharArray();
//        int[] num = new int[chars.length];
//        for (int i1 = 0; i1 < chars.length; i1++) {
//            num[i1] = chars[i1]-48;
//        }
//        System.out.println(Arrays.toString(num));
        System.out.println("您存入的数组为:" + Arrays.toString(num));
        System.out.println("请输入您的tagter");
        int n = scanner.nextInt();
        week10_Wednesday one = new week10_Wednesday();
        one.twoSum(num, n);
    }
}

(第三题)

峰值元素是指其值大于左右相邻值的元素。
给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。

/*
    (三)题目描述
峰值元素是指其值大于左右相邻值的元素。
给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。
数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。
你可以假设 nums[-1] = nums[n] = -∞。
     */
 public static void main(String[] args) {
        System.out.println("请输入您想要输入n个整数:");
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        System.out.println("请输入您想要存入的数组:");
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = scanner.nextInt();
        }
        System.out.println("该数组的峰值元素为:");
        for (int i = 0; i < n; i++) {
            if (nums[i] > nums[i + 1]) {
                System.out.println(i);
            }
        }
    }

Wednesday

(第一题)

给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]

import java.util.Arrays;
import java.util.Scanner;
public class week10_Wednesday {
    /*
    (一)题目描述
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
说明:
初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。
你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
示例:
输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6],       n = 3
输出:[1,2,2,3,5,6]

     */
    int [] num1;
    int [] num2;
    void mergeArrays(int [] num1,int [] num2){
        this.num1 = num1;
        this.num2 = num2;
        int []arr = new int[num1.length+num2.length];
        int n1 = 0;
        int n2 = 0;
        for (int i = 0; i < arr.length; i++) {
            if(n1>=num1.length){
                arr[i] = num2[n2];
                n2++;
                continue;
            }
            if(n2>=num2.length){
                arr[i] = num1[n1];
                n1++;
                continue;
            }
            if(num1[n1]<num2[n2]){
                arr[i] = num1[n1];
                n1++;
            }
            else {
                arr[i] = num2[n2];
                n2++;
            }
            //continue;
        }
        System.out.println(Arrays.toString(arr));
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int []r_1 = new int[3];
        int []r_2 = new int[3];
        for (int i = 0; i < r_1.length; i++) {
            r_1[i] = scanner.nextInt();
        }
        for (int i = 0; i < r_2.length; i++) {
            r_2[i] = scanner.nextInt();
        }
        week10_Wednesday one = new week10_Wednesday();
        //int []r = new  int[r_1.length+r_2.length];
        one.mergeArrays(r_1,r_2);
    }
    /*
    无序合并
     */
    public static int[] answer(int[] a1,int[] a2){
        int[] num = new int[a1.length+a2.length];

        for (int i = 0; i < a1.length; i++) {
            num[i] = a1[i];
        }
        for (int i = 0; i < a2.length; i++) {
            num[i+a1.length] = a2[i];
        }
        return num;
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int []a = new int[5];
        int []b = new int[5];
        for (int i = 0;i<a.length;i++) {
            a[i] =scanner.nextInt();
        }
        for (int i = 0;i<b.length;i++){
            b[i] =scanner.nextInt();
        }
        System.out.println(Arrays.toString(answer(a, b)));
    }
}

(第二题)

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

与周一第二题相同

/*
    (二)题目描述
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
     */
    int[] arr;
    int target;

    void twoSum(int[] arr, int target) {
        //int n;
        this.arr = arr;
        this.target = target;
        for (int i = 0; i < arr.length; i++) {
            for (int j = i + 1; j < arr.length - 1; j++) {
                if (target == arr[i] + arr[j]) {
                    System.out.println("索引为:" + "[" + i + "," + j + "]");
                }
            }
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您想要存入的数字:");
        int[] num = new int[5];
        for (int i = 0; i < num.length; i++) {
            num[i] = scanner.nextInt();
        }
//        int i = scanner.nextInt();
//        String s = Integer.toString(i);
//        char[] chars = s.toCharArray();
//        int[] num = new int[chars.length];
//        for (int i1 = 0; i1 < chars.length; i1++) {
//            num[i1] = chars[i1]-48;
//        }
//        System.out.println(Arrays.toString(num));
        System.out.println("您存入的数组为:" + Arrays.toString(num));
        System.out.println("请输入您的tagter");
        int n = scanner.nextInt();
        week10_Wednesday one = new week10_Wednesday();
        one.twoSum(num, n);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值