day06作业--------------Java方法和数组(二)
1.给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,
并返回他们的数组下标,假设每种输入只会对应一个答案
(因为是两个数,所以下标值,有两个,所以该方法返回一个int[],里面包含两个整数对应的数组下标)
2. 给定一个数组,将数组中的元素循环向右移动 k 个位置,其中 k 是非负数。
举例
输入: [1,2,3,4,5,6,7] 和 k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右循环移动 1 位: [7,1,2,3,4,5,6]
向右循环移动 2 位: [6,7,1,2,3,4,5]
向右循环移动 3 步: [5,6,7,1,2,3,4]
答案:
1.
1 package com.day006; 2 3 import java.util.Arrays; 4 5 /* 6 * 1.给定一个整数数组 nums 和一个目标值 target, 7 * 请你在该数组中找出和为目标值的那两个整数, 8 * 并返回他们的数组下标,假设每种输入只会对应一个答案 9 (因为是两个数,所以下标值,有两个,所以该方法返回一个int[], 10 里面包含两个整数对应的数组下标) 11 */ 12 public class Demo1 { 13 public static void main(String[] args) { 14 int[] arr = {1,5,4,6,3}; 15 int[] a = findAdd(arr, 10); 16 System.out.println(Arrays.toString(a)); 17 } 18 19 public static int[] findAdd(int[] arr, int target) { 20 int[] printarr = new int[2]; 21 for(int i = 0; i < arr.length; i++) { 22 for(int j = i+1; j< arr.length; j++) { 23 if(arr[j] == target - arr[i]) { 24 printarr[0] = i; 25 printarr[1] = j; 26 } 27 } 28 } 29 return printarr; 30 } 31 }
2.
1 package com.day006; 2 3 import java.util.Arrays; 4 5 /* 6 * 2. 给定一个数组,将数组中的元素循环向右移动 k 个位置,其中 k 是非负数。 7 8 举例 9 输入: [1,2,3,4,5,6,7] 和 k = 3 10 输出: [5,6,7,1,2,3,4] 11 解释: 12 向右循环移动 1 位: [7,1,2,3,4,5,6] 13 向右循环移动 2 位: [6,7,1,2,3,4,5] 14 向右循环移动 3 步: [5,6,7,1,2,3,4] 15 */ 16 public class Demo2 { 17 18 public static void main(String[] args) { 19 int[] a = {1,2,3,4,5,6,7}; 20 //调用moveCycle方法,用字符串move实现输出 21 String move = Arrays.toString(moveCycle(a,3)); 22 System.out.println(move); 23 } 24 25 public static int[] moveCycle(int[] arr, int step) { 26 int len = arr.length; //arr数组的数组长度 27 //新建steparr数组,用来装移动位置后的数组 28 int[] steparr = new int[len]; 29 for(int i = 0; i < len; i++) { 30 if((i+step) > (len-1)) { 31 //如果steparr数组的索引值(i+step)大于数组arr数组的索引值, 32 //元素循环到前面去,要再减去arr的数组长度len, 33 //steparr的索引值变为(i+step-len) 34 steparr[i+step-len] = arr[i]; 35 } 36 else { 37 //steparr数组的索引值 38 steparr[i+step] = arr[i]; 39 } 40 41 } 42 return steparr; 43 } 44 45 }