案例一、二维数组的遍历
代码
package com.zhbit.leetcode_testsum.algorithmic;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
public class Traverse {
@GetMapping("/traverse")
/**
* 二维数组的遍历
*/
public void traverse(){
int[][] array = new int[][]{{2,3},{4,5,6},{7,8,9,0}};
for (int i=0;i<array.length;i++){
int[] arr = array[i];
for (int j=0;j<arr.length;j++) {
int x = arr[j];
log.info("{}",x);
}
System.out.println();
}
}
}
外层循环控制第几个小数组,内层循环控制小数组中的第几个数
案例二、用随机数生成一个数组
代码
package com.zhbit.leetcode_testsum.algorithmic;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class RandomArray {
//生成随机数并赋给数组的方法
public int[] randomArray(){
//声明一个数组
int[] arrray = new int[10];
//声明循环变量i
for (int i=0;i<arrray.length;i++){
//生成1到10的随机数并强转型为int型然后赋值给被声明的整形变量result
int result = (int)(Math.random()*10+1);
//将随机数result放入数组
arrray[i] = result;
}
log.info("随机数组为{}",arrray);
return arrray;
}
}
定义一个长度为10的数组,生成10个随机数并放入数组
案例三、综合应用
1.生成一个长度为10的随机数组nums
2.给定一个值target,当nums中任意两数之和等于target时,将这两数在数组中的下标存入新数组arr中。
3.定义一个二维数组array,用来存放所有满足条件的一维数组arr并输出结果
代码(随机数生成数组的代码在上面)
package com.zhbit.leetcode_testsum.algorithmic;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Component
@Slf4j
public class SumVerify {
@Autowired
private RandomArray randomArray;
@GetMapping("/sum")
public int[][] verifySum() {
int[] nums = randomArray.randomArray();
log.info("随机数组是{}",nums);
int targer = 12;
//循环变量ijhk,二维数组长度变量x,定位小数组在二维数组的下标n
int i, j,h,k, x = 0 , n = 1;
for (i = 0; i < nums.length; i++) {
for (j = i + 1; j < nums.length; j++) {
if (nums[i] + nums[j] == targer) {
x = x + 1;
}
}
}
log.info("x变量的值{}",x);
int[][] array =new int[x][2];
// 外循环,定义i=0即第被加数为数组nums的第一个数,当被加数在数组中时在内循环为他寻找加数
//当被加数和数组中所有加数运算完成后,i自增,被加数变为数组中第二个数,重复运算
for (k = 0; k < nums.length; k++) {
// 内循环,定义加数j为数组i后面的一个数,当加数也在数组内时,加数和被加数相加,若相加之和
// 与targer相等记录加数和被加数在nums数组中的位置:i,j并将其赋给二维数组result,返回得到的
//数组result。
for (h = k + 1; h < nums.length; h++) {
if (nums[k] + nums[h] == targer) {
// int[][] arrayResult = new int[n][2];
int[] arr = array[n - 1];
arr[0] = k;
arr[1] = h;
n = n + 1;
log.info("数组{}", arr);
// log.info("数组{}", array[n - 1]);
}
}
}
log.info("数组 to String:{}", JSONObject.toJSONString(array));
return array;
}
}
tip:因为二维数组的长度不确定,因此我们需要先通过循环确定有多少个符合条件的一维数组要存放进二维数组array。