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 }

 

posted @ 2020-04-15 14:50  dust--  阅读(189)  评论(0编辑  收藏  举报