一、创建一个 int 类型的数组, 元素个数为 100, 并把每个元素依次设置为 1 - 100
代码实现
public static void main(String[] args) { int[] arr=new int[100]; for (int i = 0; i < arr.length; i++) { arr[i]=i+1; } System.out.println(Arrays.toString(arr)); }
运行结果
二、改变原有数组元素的值
实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 , 并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}
思路
传入数组,得到数组长度,将数组长度赋值给新数组长度,用数组长度进行遍历,将数组中每一个元素赋值给新数组的元素,最后返回新数组
代码实现
public static int[] transform(int arr[]) { int n= arr.length; int arr2[]=new int[n]; for (int i = 0; i < n; i++) { arr2[i]=arr[i]*2; } return arr2; } public static void main(String[] args) { int arr[]={3,5,7,9}; int arr2[]=transform(arr); System.out.println(Arrays.toString((arr2))); }
运行结果
三、数组所有元素之和
实现一个方法 sum, 以数组为参数, 求数组所有元素之和.
思路
定义一个变量,将数组进行遍历,将数组遍历得到的值加给定义的变量,返回变量
代码实现
public static int[] transform(int arr[]) { int n= arr.length; int arr2[]=new int[n]; for (int i = 0; i < n; i++) { arr2[i]=arr[i]*2; } return arr2; } public static void main(String[] args) { int arr[]={3,5,7,9}; int arr2[]=transform(arr); System.out.println(Arrays.toString((arr2))); }
运行结果
四、调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。
如数组:[1,2,3,4,5,6] 调整后可能是:[1, 5, 3, 4, 2, 6]
思路
遍历数组,定义i,j下标,如果i下标遇到的对应元素为奇数,i往后走,j下标遇到的对应元素是偶数,j往前走
代码实现
public static void reorder(int[] array){ int i = 0; int j = array.length-1; while (i <j) { while (i < j && array[i] % 2 != 0) { i++;//如果i下标遇到的对应元素为奇数,i则往后走 } while (i < j && array[j] % 2 == 0) { j--;//如果j下标遇到的对应元素为偶数,j则往前走 } int tmp = array[i]; array[i] = array[j]; array[j] = tmp; } } public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请您输入数组的长度"); int n=sc.nextInt(); int[] array=new int[n]; System.out.println("请您输入数组的值"); for (int i = 0; i < array.length; i++) { array[i]=sc.nextInt(); } reorder(array); System.out.println(Arrays.toString(array)); }
运行结果
五、两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
思路
遍历数组元素,当数组元素与给出的目标值相等时返回该数组元素下标
代码实现
public static int[] Nums(int[] nums,int target){ for (int i = 0; i < nums.length; i++) { for (int j = i+1; j < nums.length; j++) { if(nums[i]+nums[j]==target){ return new int[]{i,j}; } } } return null; } public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请您输入数组的长度"); int n=sc.nextInt(); int[] nums=new int[n]; System.out.println("请您输入数组的值"); for (int i = 0; i < n; i++) { nums[i]=sc.nextInt(); } System.out.println("请您输入一个数"); int target = sc.nextInt(); int[] arr = Nums(nums, target); System.out.println(Arrays.toString(arr)); }
运行结果
六、只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
思路
遍历数组,通过异或^运算,返回元素,因为只有一个元素只出现一次以外,其余元素都出现两次,所以进行遍历,因为a^a=0,异或卡在哪里,则哪个元素位置在哪里
异或运算的特点:
1.任何数和0做异或运算,结果还是原来那个数字,即a^0=a
2.任何数和本身做异或运算,结果为0,即a^a=0
3.异或运算满足交换律和结合律
代码实现
public static void main(String[] args) { int arr[]={0}; Scanner sc=new Scanner(System.in); int n= sc.nextInt(); arr=new int[n]; for (int i = 0; i < n; i++) { arr[i]= sc.nextInt(); } int num=Num(arr); System.out.println(num); } public static int Num(int[] arr) { int num = 0; int length = arr.length; for (int i = 0; i < length; i++) { num ^= arr[i]; } return num; }
运行结果
七、多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
思路
传定数组,通过for循环,定义变量,对每一个数再for循环进行遍历,如果有重复的数则再加一,最后判定重复的次数是否大于数组长度的一半,如果是则返回这个重复的数
代码实现
public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = {0}; arr = new int[n]; System.out.println("请输入数组元素(多数元素)"); for (int i = 0; i < arr.length; i++) { arr[i] = sc.nextInt(); } int newnum = MoreNum(arr); System.out.println(newnum); } public static int MoreNum(int[] arr) { int count = 0; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length; j++) { if (arr[i] == arr[j]) { count++; } if (count > arr.length / 2) { return arr[i]; } } } return -999; }
运行结果
八、存在连续三个奇数的数组
给你一个整数数组 arr
,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true
;否则,返回 false
。
思路
遍历数组,如果遇到数目是奇数,则判断它的下一个和下下个数目是不是奇数,如果是则返回true,如果不存在则返回false
代码实现
public static boolean Judge(int[] arr) { for (int i = 0; i < arr.length - 2; i++) { if (arr[i] % 2 == 1) { if (arr[i + 1] % 2 == 1) { if (arr[i + 2] % 2 == 1) { return true; } } } } return false; } public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请您输入数组存储个数"); int n= sc.nextInt(); int[] arr; arr=new int[n]; System.out.println("请您输入数组元素"); for (int i = 0; i < arr.length; i++) { arr[i]= sc.nextInt(); } boolean a=Judge(arr); System.out.println(Judge(arr)); }
运行结果