Demo09.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package com.loveCoding.j20250607_method;
  2. import java.util.Arrays;
  3. /**
  4. * @author WanJl
  5. * @version 1.0
  6. * @title Demo09
  7. * @description
  8. * @create 2025/6/7
  9. */
  10. public class Demo09 {
  11. /**
  12. * 1、实现将arr1和arr2数组合并为一个新的数组并返回,先数组1后数组2
  13. * 1,2,3,4,5 5,4,3,2,1
  14. * 1,2,3,4,5,5,4,3,2,1
  15. *
  16. * @param arr1
  17. * @param arr2
  18. * @return
  19. */
  20. public static int[] toOneArray(int[] arr1, int[] arr2) {
  21. if (arr1.length == 0 || arr1 == null) { //如果前一个数组为空,则直接返回后一个数组
  22. return arr2;
  23. }
  24. if (arr2.length == 0 || arr2 == null) { //如果后一个数组为空,则直接返回前一个数组
  25. return arr1;
  26. }
  27. int[] tempArray = new int[arr1.length + arr2.length];
  28. for (int i = 0; i < tempArray.length; i++) {
  29. if (i < arr1.length) {
  30. tempArray[i] = arr1[i];
  31. } else {
  32. tempArray[i] = arr2[i - arr1.length];
  33. }
  34. }
  35. return tempArray;
  36. }
  37. /*
  38. 2、实现将arr1和arr2数组合并为一个新的数组并返回,
  39. 起始元素为数组1的元素,然后是数组2的第1个元素....以此类推
  40. 1,2,3,4,5 5,4,3,2,1
  41. 1,5,2,4,3,3,4,2,5,1
  42. */
  43. public static int[] toOneArray2(int[] arr1, int[] arr2) {
  44. //如果前一个数组为空,则直接返回后一个数组
  45. if (arr1.length == 0 || arr1 == null) {
  46. return arr2;
  47. }
  48. //如果后一个数组为空,则直接返回前一个数组
  49. if (arr2.length == 0 || arr2 == null) {
  50. return arr1;
  51. }
  52. //新数组长度是两个数组的长度和
  53. int[] tempArray = new int[arr1.length + arr2.length];
  54. //判断两个数组哪个长度更短
  55. int minLength= arr1.length> arr2.length?arr2.length:arr1.length;
  56. //以长度短的进行循环
  57. for (int i = 0; i < minLength; i++) {
  58. tempArray[i*2]=arr1[i]; //先赋值数组arr1 0 2 4 6 8 10 .....
  59. tempArray[(i*2)+1]=arr2[i]; //再赋值数组arr2 1 3 5 7 9 11.....
  60. }
  61. //再开启一个循环,把数组长的剩余的元素依次放到新数组后面
  62. for (int i = minLength*2; i <tempArray.length ; i++) {
  63. tempArray[i]=arr1.length< arr2.length?arr2[i-minLength]:arr1[i-minLength];
  64. }
  65. return tempArray;
  66. }
  67. /*
  68. 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出
  69. 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
  70. 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。
  71. 你可以按任意顺序返回答案。
  72. */
  73. public int[] twoSum(int[] nums, int target) {
  74. int[] arr=new int[2];
  75. for (int i = 0; i < nums.length; i++) {
  76. for (int j = i+1; j < nums.length; j++) {
  77. if (nums[i]!=nums[j]&&nums[i]+nums[j]==target){
  78. arr[0]=i;
  79. arr[1]=j;
  80. return arr;
  81. }
  82. }
  83. }
  84. return arr;
  85. }
  86. public static void main(String[] args) {
  87. int[] arr1 = {1, 2, 3};
  88. int[] arr2 = {10, 20, 30, 40, 50};
  89. int[] array = toOneArray2(arr1, arr2);
  90. System.out.println(Arrays.toString(array));
  91. }
  92. }