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);
}